私はこの動作を理解できません: 私のisset()
チェックは、確実な値を持つ に対して常にfalseを返します!property
<?php
class User {
protected $userId; // always filled
protected $userName; // always filled
/**
* Magic method for the getters.
*
* @param type $property
* @return \self|property
*/
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
} else {
throw new Exception('property '.$property.' does not exist in '.__CLASS__.' class');
}
}
}
?>
次のように別のクラスからこの変数をチェックすると:
isset($loggedUser->userName); // loggedUser is my instantiation of the User.php
戻るFALSE
?? しかし__isset()
、User.php で関数をオーバーロードすると、TRUE
期待どおりに戻ります。
public function __isset($name)
{
return isset($this->$name);
}
ただ明確にします:
echo $loggedUser->name; // result "Adis"
isset($loggedUser->name); // results in FALSE, but why?
ご協力いただきありがとうございます!