问题
I need to access some functions in multiple controllers in a CodeIgniter application. At the moments the functions are really basic and a few, For example:
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
As these functions are related to login, I can either put them in a helper file and place in Application/helpers/login_helper.php
OR
i can extend the CI_Controller, by creating MY_Controller.php
and put it in Application/Core/MY_Controller.php
Both of the methods work, but I am wondering which one fits better for this kind of task. I think there should be some rules, when the Controller should be extended or when the helper should be used?
回答1:
If you're using these functions in your other controllers (and only in your other controllers) I would suggest refactoring them into MY_Controller. This would also give you direct access to the $CI instance (instead of calling get_instance())
On the other hand, you could create an Authentication library. This might be more suitable..
EDIT::
I would recommend having a MY_Controller as a base, that contains auth wrapper functions, which invoke functionality from a Library that manages this type of thing.
回答2:
IMO, login functionality has nothing to do with a Controller. That's the reason I would probably put the functions you mention into a helper or a library.
回答3:
The solution I m thinking:
If you want to follow design pattern, use hook(works like a filter from Java perspective).
Alternate should be extending your My_Controller
来源:https://stackoverflow.com/questions/6704718/should-i-extend-controller-or-create-helper