我碰到这样的事情,而且我不知道是怎么打它关闭。 有没有什么好的理由这样做,或避免呢?
class Foo {
static public function bar() {}
}
someMethod() {
$instanceOfFoo->bar();
}
我碰到这样的事情,而且我不知道是怎么打它关闭。 有没有什么好的理由这样做,或避免呢?
class Foo {
static public function bar() {}
}
someMethod() {
$instanceOfFoo->bar();
}
PHP的文件说:
[...]声明为静态属性可以不与一个实例化的类对象(尽管一个静态方法可以)进行访问。 [...]静态属性无法通过使用箭头操作者的对象访问 - >。
在不指定任何特殊的静态方法被调用的->
。 你一定要避免它,虽然,因为它会导致混乱,以谁的期望读者$obj->meth()
是一个非静态方法和Cls::meth()
的静态方法。
令人惊讶的这种行为不触发任何错误。 这样做的原因是,一个静态方法,通过被称为$object->method()
在内部被转换为className::method()
在运行时(与唯一的区别是$this = NULL
被设置)。
您可以拨打下面的特定功能。
Foo::bar();
您不必创建一个对象来调用静态函数。 基本上我们写静态函数调用的函数,而不在它被定义的类的实例。
它可以调用与对象的静态功能,但为什么还有那么当你有一个更简单和更清洁的方法。