【发布时间】:2017-02-28 16:56:19
【问题描述】:
我正在从变量(在受控环境中)创建一个类,如下所示:
$controller = new $controllerClassName();
但我的 IDE 不知道类是什么类型。所以,我想知道是否有办法识别类(也许我可以创建一个接口)。
这就是我想做的:
$controller = (InterfaceController) new $controllerClassName();
编辑:我正在使用 PhpStorm IDE
解决方案:
正如 yivi 所建议的,我使用了 PHP-Doc 注释,所以现在它工作:
$controller = new $controllerClassName();
/** @var MyInterface $controller */
请注意,“MyInterface”可以是类或接口。
另外,我尝试执行以下代码,但它不起作用。看来注释必须在变量的同一块中:
/**
* @param string $var1
* @param string $var2
* ...
* @var MyInterface $controller
*/
function thisIsAFunction($var1, $var2, ...) {
...
$controller = new $controllerClassName(); // <- Class still unknown
...
}
【问题讨论】:
-
如果问题只与您的 IDE 有关,您一定要说出是哪一个。我对PHP不是很了解,但是用java+eclipse有一些注解可以帮助IDE的静态分析,对编译后的代码没有副作用。这些注解是特定于 IDE 的,在另一个注解下无效。
标签: php oop static-analysis