林”想知道如果这是可能的:__set和字符串连接
我已经成功地使用__set()魔术方法将值设置为一个类的属性:
class View
{
private $data;
public function __set($key, $value)
{
$this->data[$key] = $value;
}
}
所以我能到:
$view = new View();
$view->whatever = 1234;
问题来了,当我想连接一个字符串为例。看起来__set()没有被调用(事实上它没有被调用)。
$view = new View();
$view->a_string = 'hello everybody'; //Value is set correctly
$view->a_string.= '<br>Bye bye!'; //Nothing happens...
echo $view->a_string;
这输出“大家好”。我无法在第二个任务中执行__set()。 阅读php.net它说:
__set() is run when writing data to inaccessible properties.
因此,作为对a_string已经存在,__set没有被调用。 我的问题最后是...我怎么能实现这个连接操作?
注: 好吧......墨菲走过来,只要我这贴给我的答案...
答案(我的理解),是PHP是不能够决定是否a_string可用,因为我没有定义__get()方法。
定义__get()允许php找到当前值a_string,然后使用__set()连接该值。
是的,编辑我的帖子后我看到了这个。 – 2010-09-13 21:24:57
我必须在编辑它时正确放弃这一点。 – 2010-09-13 21:29:25
在旁注:返回NULL而不是空字符串似乎更合适。 – Wrikken 2010-09-14 00:26:34