2017-04-23 5 views
1

形質の静的変数持つことがその可能:PHP、特性自体のための静的変数、どのように?

Trait Example 
{ 
    public static $var; 
} 

class X 
{ 
    use Example; 
} 

class Y 
{ 
    use Example; 
} 

はしかし、問題はより多くのクラスは、この特性を利用したいとき、私は致命的なエラーを取得している:

Example and X define the same property ($var) in the composition of Y. This might be incompatible, to improve maintainability consider using accessor methods in traits instead. Class was composed 

これを定義する方法形質自体のための静的変数?

答えて

3

特性は、静的メンバーと静的メソッドの両方を定義できます。ただし、特性プロパティを再割り当てすることはできません。

PHPから手動http://php.net/traits

参照の例#12紛争解決

If a trait defines a property then a class can not define a property with the same name, otherwise an error is issued. It is an E_STRICT if the class definition is compatible (same visibility and initial value) or fatal error otherwise.

ソリューションは、クラスのプロパティをオーバーライドすることであろう

Trait Example 
{ 
    public static $var; 
} 

class X 
{ 
    use Example; 
    public static $var; 
} 

class Y 
{ 
    use Example; 
    public static $var; 
} 
関連する問題