【问题标题】:shared variable across multiple class instances that I can change outside the class跨多个类实例的共享变量,我可以在类外更改
【发布时间】:2011-09-28 09:21:42
【问题描述】:
代码解释得更好:
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
可以吗
【问题讨论】:
标签:
php
oop
class
variables
【解决方案1】:
静态。 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
【解决方案2】:
您应该能够使用静态成员变量来做到这一点。
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';
【解决方案3】:
您应该将$var 声明为static:
常见的数据成员
可用于类的所有对象是
称为静态成员。不同于常规
数据成员、静态成员共享
所有对象之间的内存空间
同一个班级。
【解决方案4】:
你可以使用静态变量:
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);