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

Php 我应该扩展控制器还是创建助手?,php,codeigniter,codeigniter-helpers,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() /

我需要访问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\u helper.php

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


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

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

如果您在其他控制器(并且仅在其他控制器)中使用这些函数,我建议将它们重构到我的控制器中。 这还将允许您直接访问$CI实例(而不是调用get_instance())

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

编辑::


我建议使用MY_控制器作为基础,它包含auth包装函数,这些函数从管理此类内容的库中调用功能。

我认为的解决方案是:

如果您想遵循设计模式,请使用(从Java的角度来看,它就像过滤器一样工作)


Alternate应该扩展My_控制器

generate_random_密钥可能应该保留在帮助程序中,例如,我需要检查用户是否登录到不同的控制器中。我喜欢在My_控制器构造函数中设置身份验证检查。这样,任何扩展它的控制器都会自动获得身份验证检查。此外,您可以对其进行设置,使某些控制器不需要它(通过一些访问控制规则,或者可能像构造函数参数一样简单)