Должен ли я расширить контроллер или создать помощник?
Мне нужно получить доступ к некоторым функциям в нескольких контроллерах в приложении CodeIgniter. На данный момент функции действительно основные и несколько, например:
generate_random_key() //just a random string
is_logged() //check if user is logged or not
logged_user_only() //if unlogged, redirect
unlogged_user_only() //if logged, redirect
Поскольку эти функции связаны с входом в систему, я могу либо поместить их в вспомогательный файл и поместить в Application/helpers/login_helper.php
ИЛИ ЖЕ
я могу расширить CI_Controller, создав MY_Controller.php
и положить его в Application/Core/MY_Controller.php
Оба метода работают, но мне интересно, какой из них лучше подходит для такого рода задач. Я думаю, что должны быть некоторые правила, когда Контроллер должен быть расширен или когда должен использоваться помощник?
3 ответа
Если вы используете эти функции в других ваших контроллерах (и только в других ваших контроллерах), я бы предложил рефакторинг их в MY_Controller. Это также даст вам прямой доступ к экземпляру $CI (вместо вызова get_instance())
С другой стороны, вы можете создать библиотеку аутентификации. Это может быть более подходящим..
РЕДАКТИРОВАТЬ::
Я бы порекомендовал иметь MY_Controller в качестве базы, которая содержит функции обертки auth, которые вызывают функциональность из библиотеки, которая управляет этим типом вещей.
IMO, функциональность входа не имеет ничего общего с контроллером. По этой причине я бы, вероятно, поместил упомянутые вами функции в помощник или библиотеку.
Решение, которое я думаю:
Если вы хотите следовать шаблону проектирования, используйте ловушку(работает как фильтр с точки зрения Java).
Альтернатива должна расширять ваш My_Controller