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

存在しないクラスのプロパティにアクセスしてはならず、それが子に存在することに依存してはなりません。親は子供が何をしているのかを知ることができない/知る必要がありません。その逆である必要があります。したがって、最初に、親でもプロパティを宣言して、親がいつでもアクセスできるようにします。その後、子はプロパティの値をオーバーライドできます。実行中のクラスのプロパティに常にアクセスしていることを確認するには、次の代わりに使用して取得する遅延静的バインディングが必要です。staticself

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 に答える