在动态环境中调用PHP静态函数

时间:2014-07-17 05:34:58

标签: php class dynamic static-methods

因为PHP允许像动态函数那样调用静态函数吗?

我使用的是php 5.3.2

class weird{

    public static function iamstatic($calledFrom){
            echo "I am  a static function called with  a $calledFrom operator\n";
    }

    public function test(){
            self::iamstatic("static");
            $this->iamstatic("dynamic");
    }

 }

$c = new weird();
$c->test();

weird::iamstatic("Static outside class");
$c->iamstatic("Dynamic outside class");

输出:

I am  a static function called with  a static operator
I am  a static function called with  a dynamic operator
I am  a static function called with  a Static outside class operator
I am  a static function called with  a Dynamic outside class operator

2 个答案:

答案 0 :(得分:4)

总是可以使用php5.0及以上版本。

http://3v4l.org/14PYp#v500

此外,它在文档(static

中提到
  

将类属性或方法声明为静态可使它们可访问   无需实例化类。声明为的财产   无法使用实例化的类对象访问static(尽管是   静态方法可以)。

这不是一个错误(static methods assigned to instances

答案 1 :(得分:0)

我不知道这是可能的,尽管它可能并不重要。您的静态方法不允许您引用$this,因此您无法在非静态上下文中使用它。如果您不需要引用$this,那么无论哪种方式都无关紧要,这就是您的代码所证明的。