【发布时间】:2015-11-10 21:29:21
【问题描述】:
我遇到的情况是,我必须使用静态方法,但我的类名存储在某个变量中。
根据此链接:http://php.net/manual/en/keyword.paamayim-nekudotayim.php#50310 我不能将变量与:: 一起使用。
作为参考,我的代码如下所示,我正在使用 Yii2 来处理这些东西:
$modelName = "User";
$query = $modelName::find();
显然它给了我错误,我给出的链接从现在开始已经有 10 年了,所以只是想检查一下这种情况是否有其他选择。
更新:
$query = AdminUser::find(); // Works Fine
$name = 'AdminUser';
$query = call_user_func("$name::find");
// Giving Below Error
call_user_func() expects parameter 1 to be a valid callback, class 'AdminUser' not found
【问题讨论】:
-
根据link,从 php 5.3 开始,您可以将类名存储在变量中。你得到什么错误?您调用的函数是否定义为静态的?
-
@bryant 是的,我正在调用静态方法。
-
在 2005 年写评论时,你不能。你的 PHP 版本是多少?
-
@ÁlvaroG.Vicario 我使用的是 5.5.12
-
然后it should work。您可以编辑问题并粘贴错误消息吗?请使用剪贴板复制实际的错误信息,不要只用自己的话来描述。
标签: php oop yii2 static-methods scope-resolution