2016-07-28 100 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的類而不必重新聲明它在哪裏。如何使一個抽象變量靜態到一個子類

所以說,也許我創建從延伸到B類的多個對象,我想從B級製作共享相同的$ VAR值的所有對象。

且說我基於C類創建對象,他們都應該共享$ VAR值相同...

這是目前我得到的結果是:

BC 
CC 

然而,我正在尋找的是:

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