2011-07-04 123 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); 
相关问题