PHPDoc 或类型提示类作为方法的参数

标签 php phpdoc type-hinting

如何指示函数/方法接受类作为参数? PHPDoc 或类型提示就足够了,但似乎都不允许这样做。

这是我认为应该起作用的示例...

/**
 * @param $class class  A reference to a class that will be used to do something
 */
function doReallyWeirdStuff(class $class){
  $class::callStaticMethod();
}

我已经知道如何将类传递给此函数。我如何指示您应该这样做?

最佳答案

类名只是字符串,因此您必须将它们键入提示为字符串。然后您需要在运行时在您的方法中检查它实际上是一个类:

/**
 * @param $class string  A reference to a class that will be used to do something
 */
function doReallyWeirdStuff(string $class){
  if (class_exists($class)) {
    $class::callStaticMethod();
  } else {
    throw \InvalidArgumentException;
  }
}

请注意,要严格遵守字符串值(如类名所要求的那样),您需要启用严格类型提示:

declare(strict_types=1);

否则,你可以这样调用:

doReallyWeirdStuff(M_PI);

这没有多大意义。

关于PHPDoc 或类型提示类作为方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642800/

相关文章:

api - 如何生成 Magento 的 API 文档/文档?

php - 如何在 PHPDoc 中标记一个参数是可选的?

Python3 typehints - 传入类型的元组后,指定返回值是这些类型的实例的元组

php - 从最近 7 天插入的数据库中获取数据

php - 如何通过cURL 获取带有POST 方法的表单响应?

php - 奇怪的 PHP 字符集问题?

php - php 文档中的标签顺序

php - PHP7 中的窄返回类型

python - 通过共享的任意类型耦合的抽象类的类型注释

php - 在 SELECT 查询之后的 while 循环之前检查 num_rows 有什么用处?