2014-02-24 27 views
0

我有以下代碼。爲什麼當我重寫魔術函數時,isset不會返回true __get和__set

我可以知道,爲什麼isset沒有返回true,當我重寫神奇功能__get__set

我得到的輸出是

$param->country : US 
isset($param->country) : 

<?php 

class Param 
{ 
    private $params = array(); 

    public function __get($name) { 
     return $this->params[$name]; 
    } 

    public function __set($name, $value) { 
     $this->params[$name] = $value; 
    } 
} 

$param = new Param(); 
$param->country = "US"; 
echo "\$param->country : " . $param->country . "\n"; 
echo "isset(\$param->country) : " . isset($param->country) . "\n"; 

回答

1

這是由設計。 isset不是函數,它是一種語言結構,它不會自動調用__get。這就是爲什麼有一個__isset魔術方法also

雖然你需要PHP> = 5.1.0。

相關問題