我应该扩展控制器还是创建助手?
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?
我需要访问CodeIgniter应用程序中多个控制器中的某些函数。 此时函数非常基本和一些,例如: p>
generate_random_key()//只是一个随机字符串
is_logged()//检查用户是否已记录 或者不是
logged_user_only()//如果未记录,则重定向
unlogged_user_only()//如果已记录,则重定向
code> pre>
由于这些功能与登录相关,因此 可以将它们放在帮助文件中并放在 Application / helpers / login_helper.php code> p>
OR strong> p>
我可以通过创建 MY_Controller.php code>扩展CI_Controller并将其放入 Application / Core / MY_Controller.php code> p>
div>
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.
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.
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