1

静的クラスのプロパティを定義するときに、値を割り当てようとしています。

namespace Base;

abstract class Skeleton {   

protected static $entityManager = \Zend_Registry::get("EntityManager");
    ...
}

このコードを実行しようとすると、次のエラーが発生します。

Parse error: syntax error, unexpected '(', expecting ',' or ';' in /var/www/
somewhere/application/models/Base/Skeleton.php on line 6

単純な文字列値を割り当てるだけの場合:

protected static $entityManager = "string";

すべてが大丈夫です。PHPが処理できないことをしていますか?もしそうなら、これを解決する方法は?

4

2 に答える 2

3

静的かどうかに関係なく、実行が必要なコードをクラス変数として配置することはできません。

考えてみてください。その時点でZend_Registry::get("EntityManager")実行されますが、を設定しているため、クラスの作成時に実行できませんstatic

静的でなくても、いつZend_Registry::get("EntityManager")実行されますか?オブジェクトがインスタンス化されるのはいつですか、それとも1回ですか?クラス内の関数に入れる必要があります。

于 2010-09-02T13:34:22.637 に答える
1

クラスのプロパティは、実行時に評価する必要のあるデータに依存しない場合があります。

[クラスメンバー変数]には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価でき、評価するために実行時情報に依存してはなりません。

セッターを追加し、ブートストラップ中に値を設定します。

于 2010-09-02T13:32:35.450 に答える