Zendのと静的クラスのプロパティ
-
26-09-2019 - |
質問
私はそれを定義するときに、静的クラスのプロパティに値を代入しようとしています:
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";
Everytingは大丈夫です。アム私はPHPを扱うことができない何かをやって?もしそうなら、どのようにこの問題を解決するには?
解決
あなたはクラス変数、静的またはないとして実行する必要のあるコードを配置することはできません。
それについて考え、ポイントが実行されますZend_Registry::get("EntityManager")
した時、それはあなたがstatic
としてそれを設定しているため、クラスが作成されたときに実行することができません。
それは静的ではなかった場合でも、ときZend_Registry::get("EntityManager")
GETは動作しますか?オブジェクトがインスタンス化または一度されると?これは、クラスの内部機能に置かれる必要がある。
他のヒント
クラス特性がで評価されなければならないことをデータに依存しないかもしれませんランタイム:の
[クラスのメンバ変数]は初期化を含むことができるが、この初期化は一定の値でなければならない - であり、コンパイル時に評価されることができなければならないと評価されるために、実行時情報に依存してはなりません。
セッターを追加し、ブートストラップ時の値を設定します。
所属していません StackOverflow