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