Конструктор контроллера 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()