我不確定在PHP中使用__get
和__set
方法的值是多少。php __set(),__get和簡單設置,獲取函數之間的區別
這是在數組中設置值的代碼。
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
時,他們可以自己實現?
我確定他們有一些用途,但我必須錯過一些東西。
'$ obj->了'是比'obj- $>的GetValue( 'A')更具可讀性'...爲** MagicMethods – DCoder