Should I extend Controller or Create Helper?

痴心易碎 提交于 2019-12-12 04:58:56

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!