根据这里的答案:Getter和Setter?下面的函数应该可以工作,但是它不产生输出。
<?php
class UserInfo{
private $username;
private $privileges;
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
}
$user=new UserInfo;
$user->__set($username,"someuser");
echo $user->__get($username);
?>
http://codepad.org/jwMaeVMN 我在这里做错了什么吗?
您的直接问题是,当将属性名称传递给函数时,您必须使用"username"
而不是未定义的$username
。
然而,这并不是魔法getter和setter的工作方式。你应该设置使用$user->username = "someuser";
,将自动触发setter:
$user=new UserInfo;
$user->username = "someuser";
echo $user->username;
设置:
$user->username = "user";
:
$username = $user->username;
当这一行被调用时:
$user->__set($username,"someuser");
作用域中没有$username,并且你正在向方法调用传递一个空参数。
调用应该是
$user->__set('username', 'someuser');