Jer*_*auw 0 php static
我遇到了这样的事情,不知道该怎么办。是否有充分的理由这样做或避免这样做?
class Foo { static public function bar() {} } someMethod() { $instanceOfFoo->bar(); }
Sho*_*hoe 5
PHP 文档说:
[...] 声明为静态的属性不能被实例化的类对象访问(尽管静态方法可以)。[...] 无法使用箭头运算符 -> 通过对象访问静态属性。
没有为被调用的静态方法指定任何特殊的东西->。但是,您绝对应该避免使用它,因为它会给希望$obj->meth()成为非静态方法和Cls::meth()静态方法的读者造成混淆。
->
$obj->meth()
Cls::meth()
令人惊讶的是,这种行为不会触发任何错误。这样做的原因是在运行时$object->method()内部调用了一个静态方法className::method()(唯一的区别$this = NULL是设置了)。
$object->method()
className::method()
$this = NULL
归档时间:
12 年,10 月 前
查看次数:
1414 次
最近记录: