PHP,Zend Framework快速入门教程:这是如何工作的?

时间:2009-10-26 19:52:41

标签: php zend-framework

Here is a link to the tutorial that I am referring to.

这对我来说很奇怪...在视图脚本中我们有这段代码:

<?php echo $this->escape($entry->email) ?>

显示已在留言板模型中设置的电子邮件地址。但模型上的属性为$_email,并且受到保护。我们没有打电话给$entry->getEmail();所以我不明白这是如何工作的,或者它在哪里提取这些信息。我知道它有效,但我只是不明白如何。

3 个答案:

答案 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()方法,允许访问通常无法访问的属性。