2016-07-28 17 views
0
<?php 
abstract class A { 
    public static $var = "A"; 
    public function setVar() { 

    } 
    public function test() { 
     $this->setVar(); 
     echo static::$var; 
    } 

    public function returnVar() { 
     return static::$var; 
    } 
} 

class B extends A { 
    public function setVar() { 
     static::$var = 'B'; 
    } 
} 

class C extends A { 
    public function setVar() { 
     static::$var = 'C'; 
    } 
} 

$class = new B(); 
$class->test(); 

$class2 = new C(); 
$class2->test(); 

echo "</br>"; 
echo $class->returnVar(); 
echo $class2->returnVar(); 

?> 

私がしようとしているのは、変数$ varを抽象クラスAを拡張するクラスに静的にすることです。抽象クラスを静的にサブクラスに静的にする方法

おそらく、Aを拡張するクラスBから複数のオブジェクトを作成するとします。クラスBのすべてのオブジェクトに同じ$ var値を共有したいとします。

BC 
CC 

をしかし、:

は、これは私が現在取得していた結果である

...私はその後、クラスCに基づいてオブジェクトを作成し、彼らはすべての$ VARの同じ値を共有すべきであると言います私が探しているです:

BC 
BC 

おかげ

答えて

2

そのようにそれを試してみてください:

#setting 
    public function setVar() { 
    static::$var[get_class($this)] = 'B'; 
    } 
    #getting in abstract 
    public function returnVar() { 
     return static::$var[get_class($this)]; 
    } 
    #add this in the abstract class 
    public function setVar(); 
+0

完璧に動作します、よろしくお願いいたします。 :) – Addil

関連する問題