Вы можете использовать статическую переменную :
function foo($val=null) {
static $var = null;
if (!is_null($var)) $var = $val;
return $val;
}
Здесь $var
отображается только внутри функции foo
и поддерживается в течение нескольких вызовов:
foo(123);
echo foo(); // 123
foo(456);
echo foo(); // 456
Или используйте класс с закрытым членом и получите доступ / измените его с помощью открытых методов:
class A {
private $var;
public function setVar($val) {
$this->var = $val;
}
public function getVar() {
return $this->var;
}
}
При этом закрытый член var виден только определенному экземпляру этого класса:
$obj1 = new A();
$obj1->setVar(123);
$obj2 = new A();
$obj2->setVar(456);
echo $obj1->getVar(); // 123
echo $obj2->getVar(); // 456
Если вы сделаете член статическим , тогда для класса будет только один элемент вместо каждого:
class A {
private static $var;
public function setVar($val) {
self::$var = $val;
}
public function getVar() {
return self::$var;
}
}
$obj1 = new A();
$obj1->setVar(123);
$obj2 = new A();
$obj2->setVar(456);
echo $obj1->getVar(); // 456
echo $obj2->getVar(); // 456