2011-07-04 159 views
7

碼外換好解釋的那樣:跨多個類實例共享變量,我可以在類

class Class{ 
    $var = 0; 

    function getvar() 
    echo $this->var; 
    } 

} 



$inst1 = new Class(); 

// I want to change $var here to 5 

$inst2 = new Class(); 

echo $inst2->getvar(); // should be 5 

是否有可能

回答

14

靜態。 http://php.net/manual/en/language.oop5.static.php

class MyClass { 
    public static $var = 0; 

    function setVar($value) { 
     self::$var = $value; 
    } 

    function getVar() { 
     return self::$var; 
    } 
} 

echo MyClass::$var; 
MyClass::setVar(1); 
echo MyClass::getVar(); //Outputs 1 
+0

謝謝,真正幫助。 – Dewan159

2

你應該申報$varstatic

數據成員通常是 提供給類的所有對象是 稱爲靜態成員。與常規的 數據成員不同,靜態成員共享 所有對象之間的內存空間。

5

你應該可以使用靜態成員變量來做到這一點。

class foo { 
    private static $var; 

    public static setVar($value) { 
    self::$var = $value; 
    } 

    public static getVar() { 
    return self::$var; 
    } 
} 

$a = new foo; 
$a::setVar('bar'); 

$b = new foo; 
echo $b::getVar(); 
// should echo 'bar'; 
1

可以使用靜態變量:

class AAA{ 
    public static $var = 0; 

    function getvar() { 
    return AAA::$var; 
    } 

} 

AAA::$var = "test"; 

$a1 = new AAA(); 
var_dump($a1->getvar()); 
var_dump(AAA::$var); 
相關問題