繁体   English   中英

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

[英]PHPDoc or type hint class as parameter to method

如何指示函数/方法接受类作为参数? 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类型提示。

但是,您可以滥用PHP Doc类型提示。

string|Class $class
or
Class $class

根据您的运行情况,这将产生非常混合的结果。 你将失去一些运行类型检查而没有错误否定/肯定的能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM