我有模型类,Model_Something类。 Model_Something有静态属性(表名)。
我想从模型类访问Model_Something静态属性。但它试图在模型类中找到它并给我例外:
ErrorException [ Fatal Error ]:
Access to undeclared static property: Model::$_collection_name
我尝试以这种方式访问它:
self::$some_property;
如何获得它?
您不应该访问不存在的类中的属性,而依赖于它存在于子类中。父母不能/不应该知道孩子在做什么,它需要反过来。因此,首先,在父级中也声明属性,以便父级在任何情况下都可以访问它。然后,子项可以重写属性的值。为了确保您始终访问执行类的属性,您需要后期静态绑定,通过使用 static
而不是 self
来获取:
static::$some_property;
http://php.net/manual/en/language.oop5.late-static-bindings.php
parent::$some_property;这将使你的代码不太可靠,就像你改变你的类名一样,如果你使用类名,你也必须在这里改变。