Зачем мне нужна функция Init в моем контроллере? - PullRequest
1 голос
/ 13 марта 2012

Я новичок в PHP и у меня есть несколько вопросов:

Нужна ли мне функция инициализации или я могу выполнять работу (что мне нужно сделать в моем коде) без функции инициализации?

Я говорю это потому, что NetBeans "своего рода" автоматически создал / добавил функцию init () в моем проекте.

В моем коде я предполагаю создать в нем функциональность CRUD.

Если я им не пользуюсь, какие у меня могут быть проблемы и недостатки?

Ответы [ 4 ]

4 голосов
/ 13 марта 2012

Как сказали бы официальные документы :

Метод init () в первую очередь предназначен для расширения конструктора.Как правило, ваш конструктор должен просто устанавливать состояние объекта и не выполнять много логики.Это может включать инициализацию ресурсов, используемых в контроллере (таких как модели, объекты конфигурации и т. Д.), Или назначение значений, полученных из фронт-контроллера, начальной загрузки или реестра.

У вас могут быть контроллеры, которыене переопределяйте метод init (), но он все равно будет вызываться под листами.

2 голосов
/ 13 марта 2012

Если вы новичок в PHP, не запускайте с использованием фреймворка . Вместо этого вы должны выучить сам язык.

В функции init() нет ничего существенного. Это не требование для классов в PHP. Черт .. даже __construct() не является обязательным в PHP.

Тем не менее, Zend Framework выполняет его сразу после создания контроллера. Требуется, если вы используете ZF. Вы можете прочитать больше об этом здесь .

1 голос
/ 14 марта 2012

init() в Zend_Framework для большинства практических целей - это место, где вы должны поместить код, необходимый для воздействия на все действия в этом контроллере (по крайней мере, для проверки всех действий).

Например, я часто использую метод init (), чтобы настроить помощника flashmessenger и установить пространство имен сеанса, которое я хочу использовать .:

public function init() {

        if ($this->_helper->FlashMessenger->hasMessages()) {
            $this->view->messages = $this->_helper->FlashMessenger->getMessages();
        }
        //set the session namespace to property for easier access
        $this->_session  = new Zend_Session_Namespace('location');

    }

Также Netbeans не создавал этот метод или контроллер, Zend_Tool создавал контроллер и методы, используя интерфейс, предоставленный Netbeans. Вот почему в настройках PHP для Netbeans вы должны указать путь к файлу ZF.bat и нажать кнопку регистрации поставщика, если вы измените установку ZF.

Еще одна вещь ... Имейте в виду, что для контроллера доступно больше методов, которые обеспечивают привязки к различным частям цикла отправки. Вы можете не нуждаться в них очень часто, но вам нужно знать, что они есть.

0 голосов
/ 14 марта 2012

Просто конструктор для этого класса (контроллера) ...

init(){
$this->a = 1; //If we set something like this in the init
}

public function fooAction(){
echo $this->a; //1
}
public function barAction(){
echo $this->a; //1
}

т.е. переменные, объекты .. которые инициализируются в init, будут доступны для всех действий в этом контроллере

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