Here is a link to the tutorial that I am referring to.
这对我来说很奇怪...在视图脚本中我们有这段代码:
<?php echo $this->escape($entry->email) ?>
显示已在留言板模型中设置的电子邮件地址。但模型上的属性为$_email
,并且受到保护。我们没有打电话给$entry->getEmail();
所以我不明白这是如何工作的,或者它在哪里提取这些信息。我知道它有效,但我只是不明白如何。
答案 0 :(得分:2)
如果没有名为$email
的属性,并且课程中有__get
魔术方法,那么您将通过该方法。
确实,引用您链接的页面:
__get()
和__set()
将提供 我们访问的便利机制 个人入境财产,和 代理其他的getter和 setter方法。他们也将帮助确保 只有我们列入白名单的属性才会 在对象中可用。
要了解有关PHP 5中魔术方法的更多信息,您可以阅读this page of the manual - 在Zend Framework中使用了很多魔术方法;在其他现代框架中,我应该添加。
答案 1 :(得分:1)
当在类上访问未定义的属性时,将调用该方法。
public function __get($name)
{
$method = 'get' . $name;
if (('mapper' == $name) || !method_exists($this, $method)) {
throw new Exception('Invalid guestbook property');
}
return $this->$method();
}
该方法依次重定向到另一种方法。在这种情况下getEmail()。
答案 2 :(得分:0)
$ entry对象中可能有一个__get()
方法,允许访问通常无法访问的属性。