У меня есть этот класс, который позволяет мне изменить частное свойство data
с помощью метода setData
:
abstract class FooBase{
public function __set($name, $value){
$setter = 'set'.ucfirst($name);
if(method_exists($this, $setter)) return $this->$setter($value);
throw new Exception("Property {$setter} is not defined.");
}
}
class Foo extends FooBase{
static $instance;
private $data;
public static function app(){
if(!(self::$instance instanceof self)){
self::$instance = new self();
self::app()->data = array('a' => 'somedata', 'b' => 'moredata');
}
return self::$instance;
}
public function setData($newdata){
$this->data = $newdata;
}
}
Таким образом, чтобы изменить это, я называю это как:
Foo::app()->data = array('a' => 'newdata', 'b' => 'morenewdata');
Мне было интересно, можно ли как-то изменить только одно значение массива из $data
, например:
Foo::app()->data['a'] = 'newdata'; // <-- this doesn't work, but it's what I would like to do...