Должен ли я расширить контроллер или создать помощник?

Мне нужно получить доступ к некоторым функциям в нескольких контроллерах в приложении 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

Другие вопросы по тегам