我不确定PHP中的方法__get
和方法的价值是什么。__set
这是在数组中设置值的代码。
class myclass {
public $sotre = array();
public function __set($arraykey,$value){
echo 'Setting '.$arraykey.' to '.$value;
$this->store[$arraykey] = $value;
}
}
$obj = new myclass;
$obj->a = 'arfan';
这是另一个代码。
class myclass {
public $sotre = array();
public function setvalue($arraykey,$value){
echo 'Setting '.$arraykey.' to '.$value;
$this->store[$arraykey] = $value;
}
}
$obj = new myclass;
$obj->setvalue('a','arfan');
这两个函数做同样的事情。
使用__get
/__set
魔术方法的代码:
class myclass {
public $store =
array(
'a'=>'arfan',
'b'=>'azeem',
'c'=>'hader'
);
public function __get($arraykey){
echo 'Getting array key '.$arraykey.'<br />';
if(array_key_exists($arraykey,$this->store)){
return $this->store[$arraykey];
}
}
public function getvalue($arraykey){
echo 'Getting array key '.$arraykey.'<br />';
if(array_key_exists($arraykey,$this->store)){
return $this->store[$arraykey];
}
}
}
$obj = new myclass;
echo $obj->a;
$obj = new myclass;
echo $obj->getvalue('a');
如您所见,这两个功能都做同样的工作。
我很困惑为什么 PHP 开发人员会使用魔法方法__get
/__set
什么时候可以自己实现?
我敢肯定它们有一些用处,但我一定遗漏了一些东西。