Должен ли я расширить контроллер или создать помощник? - PullRequest
0 голосов
/ 15 июля 2011

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

1 голос
/ 15 июля 2011

Если вы используете эти функции в других ваших контроллерах (и только в других ваших контроллерах), я бы предложил рефакторинг их в MY_Controller.Это также даст вам прямой доступ к экземпляру $ CI (вместо вызова get_instance ())

С другой стороны, вы можете создать библиотеку аутентификации.Это может быть более подходящим ..

EDIT ::

Я бы порекомендовал иметь в качестве основы MY_Controller, который содержит функции-оболочки проверки подлинности, которые вызывают функциональность из библиотеки, которая управляет этим типом вещей..

1 голос
/ 15 июля 2011

IMO, функциональность входа в систему не имеет ничего общего с контроллером.По этой причине я бы, вероятно, поместил упомянутые вами функции в помощник или библиотеку.

0 голосов
/ 15 июля 2011

Решение, о котором я думаю:

Если вы хотите следовать шаблону проектирования, используйте hook (работает как фильтр с точки зрения Java).

Альтернатива должна расширять ваш My_Controller

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