PHP:调用没有类名的静态方法

时间:2011-10-30 11:31:13

标签: php oop static-methods

我有像这里的类似问题:static-method-invocation,但在PHP中。简单地说,我想要这样的课程:

static class ClassName{
   static public function methodName(){
         //blah blah blah
   }
}

我想调用没有名字od类的成员方法,如下所示:

require_once(ClassName.php);

methodName();

PHP可以吗?谢谢你的回答!

2 个答案:

答案 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();