2017-02-17 7 views
1

静的プロパティを定義して、その中に別の静的プロパティを含めることは可能ですか?次のコード例のような何か:他の静的プロパティを含むときに静的プロパティを宣言する

class Foo { 
    public static $foo = array(Bar::$bar); 
} 

class Bar { 
    public static $bar = "Hello"; 
} 

は、これは明らかにコンパイルし、次のエラーが発生していません:

致命的なエラー:定数式が無効な操作

どのような方法がありますが含まれています自分自身を宣言している間に別のクラス静的/定数を呼び出す?私はコードの再利用を削減しようとしています。これが私にとっては最も簡単な方法です。

明らかに、PHP 5.6より前にこれを行う方法はないので、PHP 7/7.1を使用しています。

+0

class Foo { const CON = 'Yep'; } class BAR { public static $var = Foo::CON; } echo BAR::$var; 
で動作し、「この宣言を含んでいてもよいですこの初期化は定数値でなければなりません。つまり、 " – hassan

答えて

2

あなたはクラスのいずれかを行うことができますconstを持っています。これは[プロパティ宣言マニュアルページ(http://de2.php.net/manual/en/language.oop5.properties.php)に従って5.6以降

+0

私はこれらのすべてをconstに変更することを考えています。クラスをインスタンス化せずにクラス定数にアクセスできる限り、それは動作します。 5.6のサポートを受けることも良いでしょう。 –

0

あなたが最初のクラス変数と定数を設定し、例えば、第2の1でそれを使用することができます。

​​
+0

"これは悪い解決策ではありませんが、クラス宣言の外にコードを置かないようにしたいのです。 –

関連する問題