Конструктор контроллера CodeIgniter

Я очень новичок в создании кода, Я хотел знать, что означает конструктор в контроллере. Я видел следующий код в учебнике codeigniter -

class upload extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->helper(form);
    }

    // rest of the class...

Мой вопрос: когда вызывается конструктор - вызывается он каждый раз, когда контроллер обслуживает запрос (например, класс контроллера создается для каждого запроса, который он получает?)

Ответ 1

Ну, это более общий вопрос PHP. Во всяком случае, да, магический метод __construct() вызывается (автоматически) при каждом экземпляре класса, как вы можете видеть в руководстве: http://www.php.net/manual/en/language.oop5.decon.php

Обычно в CI нет необходимости вызывать конструктор, если вы на самом деле этого не хотите. В примере, который вы отправили, код загружает помощника при каждом экземпляре класса - это то же самое, что и загрузка помощника в каждом методе, просто сохраняет много ввода и гарантирует, что он не будет забыт. Вы также можете поместить библиотеку/вспомогательную/модель, которую вы хотите загрузить, в соответствующий массив автозагрузки в config/autoload.php(отметьте "автозагрузка" в руководстве CI)

Как только вы определяете конструктор в дочернем контроллере, вы вынуждены вызывать родительский конструктор (класса почтового CI_Controller), потому что там, где создается основной объект CI, и все классы загружаются, и вам нужны эти в вашем детском контроллере; если этого не сделать, ваш дочерний класс будет строить отдельно и не наследует.

Надеюсь, я поняла, что английский не мой родной язык:)

Ответ 2

конструктор magic Буквально его называют магическим методом. что делает конструктора крутым, так это то, что он сделает что-то для вас ПЕРЕД любым из методов. Поэтому, если у вас есть класс администратора, и кто-то должен войти в систему, чтобы получить к нему доступ - вы можете проверить наличие входа в конструктор и отсканировать его, если они не авторизованы.

в конструкторе вы можете загружать модели, библиотеки, помощники и т.д., которые нужны вашему классу, и они будут доступны для любого метода в классе.

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

Ответ 3

Не используйте функцию _construct() в последней версии apache и codeigniter

Использовать функцию helperlin in index()