Краткое руководство по PHP, Zend Framework: Как это работает? - PullRequest
0 голосов
/ 26 октября 2009

Вот ссылка на учебник, на который я ссылаюсь.

Это кажется мне странным ... в скрипте вида у нас есть этот код:

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

Отображает адрес электронной почты, который был установлен в модели Гостевой книги. Но свойство на модели $_email и оно защищено. Мы не звоним $entry->getEmail();, поэтому я не понимаю, как это работает или откуда эта информация собирается. Я знаю, что это работает, но я просто не понимаю, как.

Ответы [ 3 ]

2 голосов
/ 26 октября 2009

Если нет свойства с именем $email и в классе есть __get магический метод, вы проходите через него.

Действительно, цитируя страницу, на которую вы ссылались:

__get() и __set() обеспечат удобный для нас механизм доступа свойства отдельной записи и прокси для других добытчиков и сеттера. Они также помогут обеспечить что только свойства у нас будут белые быть доступным в объекте.

Чтобы узнать больше о магических методах в PHP 5, вы можете прочитать эту страницу руководства - магические методы довольно часто используются в Zend Framework; и в других современных Каркасах я должен добавить.

1 голос
/ 26 октября 2009

Метод вызывается при обращении к неопределенному атрибуту в классе.

public function __get($name)
{
    $method = 'get' . $name;
    if (('mapper' == $name) || !method_exists($this, $method)) {
        throw new Exception('Invalid guestbook property');
    }
    return $this->$method();
}

Метод, в свою очередь, перенаправляет на другой метод. В этом случае getEmail ().

0 голосов
/ 26 октября 2009

Вероятно, в объекте $ entry существует метод __get(), который позволяет получить доступ к обычно недоступным свойствам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...