我想知道这是否可能:
我已成功使用 __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。我的问题最后是......我怎样才能实现连接操作?
注意: 好的... Murphy 在我发布此消息后立即给了我答案...
答案(据我所知)是 PHP 无法确定a_string是否可用,因为我没有定义 __get() 方法。
定义 __get() 允许 php 找到 a_string 的当前值,然后使用 __set() 连接该值。