0

我需要在 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我可以通过创建并放入CI_Controller 来扩展它Application/Core/MY_Controller.php

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

4

3 回答 3

1

IMO,登录功能与控制器无关。这就是我可能会将您提到的函数放入帮助程序或库的原因。

于 2011-07-15T09:00:13.770 回答
1

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

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

编辑::

我建议以 MY_Controller 作为基础,其中包含身份验证包装函数,这些函数从管理此类事物的库中调用功能。

于 2011-07-15T09:00:42.567 回答
0

我在想的解决方案:

如果您想遵循设计模式,请使用钩子(从 Java 角度来看,它就像一个过滤器)。

替代应该扩展您的 My_Controller

于 2011-07-15T09:01:07.470 回答