我应该扩展控制器还是创建助手?

时间:2011-07-15 08:56:36

标签: php codeigniter codeigniter-helpers

我需要在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

我可以通过创建MY_Controller.php并将其放入Application/Core/MY_Controller.php

来扩展CI_Controller

这两种方法都有效,但我想知道哪种方法更适合这种任务。我认为应该有一些规则,何时应该扩展控制器或何时应该使用帮助器?

3 个答案:

答案 0 :(得分:1)

IMO,登录功能与Controller无关。这就是我可能会将你提到的功能放入帮助器或库中的原因。

答案 1 :(得分:1)

如果您在其他控制器中使用这些功能(并且仅在其他控制器中),我建议将它们重构为MY_Controller。 这也可以让您直接访问$ CI实例(而不是调用get_instance())

另一方面,您可以创建身份验证库。这可能更合适..

EDIT ::

我建议将MY_Controller作为基础,它包含auth包装器函数,它从管理此类事物的库中调用功能。

答案 2 :(得分:0)

我在想的解决方案:

如果您想遵循设计模式,请使用hook(就像Java透视图中的过滤器一样)。

Alternate应该扩展你的My_Controller