0

我有Model类和Model_Something类。Model_Something具有静态属性(表名)。

我想从Model类访问Model_Something静态属性。但它试图在Model类中找到它并给我一个例外:

ErrorException [ Fatal Error ]: 
Access to undeclared static property: Model::$_collection_name

我尝试以这种方式访问​​它:

self::$some_property;

如何得到它?

4

2 回答 2

3

您不应访问不存在的类中的属性,并且依赖于子类中存在的属性。父母不能/不应该知道孩子做什么,它需要反过来。因此,首先,还要在父级中声明该属性,以便父级在任何情况下都可以访问它。然后,孩子可以覆盖该属性的值。为了确保您始终访问执行类的属性,您需要后期静态绑定,您可以通过使用static而不是self

static::$some_property; 

http://php.net/manual/en/language.oop5.late-static-bindings.php

于 2012-08-12T11:13:13.947 回答
-1

父::$some_property; 这将使您的代码不那么可靠,就像您更改类名一样,如果您使用类名,也必须在此处更改。

于 2012-08-12T11:05:23.527 回答