我有像这里的类似问题:static-method-invocation,但在PHP中。简单地说,我想要这样的课程:
static class ClassName{ static public function methodName(){ //blah blah blah } }
我想调用没有名字od类的成员方法,如下所示:
require_once(ClassName.php); methodName();
PHP可以吗?谢谢你的回答!
答案 0 :(得分:4)
你不能做你想要的。您给出的示例电话:
methodName();
正在调用全局函数。即使是静态类函数也是全局函数,它们总是需要调用类名:
ClassName::methodName();
这将调用您在包含文件中创建的全局静态类函数。
我只能猜测你想要实现的目标,也许你可以从包含可以返回值的功能中受益:
static class ClassName{
static public function methodName(){
//blah blah blah
}
}
return 'ClassName';
,包括:
$className = require_once(ClassName.php);
$className::methodName();
但是,当先前加载文件时,这不适用于reguire_once
。
您可以为require_once
文件编写包装函数,将其返回值存储到全局上下文数组中,该数组根据包含的文件名保存这些值。
请记住,java语言与PHP不同。 java静态函数的等价物是PHP中的全局函数:
function methodName(){
//blah blah blah
}
,包括:
require_once(ClassName.php);
methodName();
那是PHP的等价物。
答案 1 :(得分:0)
唯一的方式
$ClassName = 'MyClass';
require_once($ClassName.'.php');
$ClassName::methodName();