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