我的代码如下:
<?php
class A {
public function CallA()
{
echo "callA" . PHP_EOL;
}
public static function CallB()
{
echo "callB" . PHP_EOL;
}
public static function __callStatic($method, $args)
{
echo "callStatic {$method}";
}
}
A::CallA();
但是它将会输出:
Strict Standards: Non-static method A::CallA() should not be called statically in /vagrant/hades_install/public/test.php on line 21
callA
也就是说,
CallA
方法不会进入 __callStatic
函数。如果想要通过使用
A::CallA()
调用 __callStatic
,应该怎么做呢?
CallA
的公共访问权限更改为受保护或私有,则会按预期看到__callStatic()
在CallA
之前触发,但这意味着无法在没有__callStatic()
的情况下调用CallA
... 这是个难题! - scrowlerstatic
关键字仅仅是建议性的,它并不会对调用行为产生很大的影响。 - deceze