Php 我应该扩展控制器还是创建助手?
我需要访问CodeIgniter应用程序中多个控制器中的一些函数。目前,这些功能非常基本,例如: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() /
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_控制器构造函数中设置身份验证检查。这样,任何扩展它的控制器都会自动获得身份验证检查。此外,您可以对其进行设置,使某些控制器不需要它(通过一些访问控制规则,或者可能像构造函数参数一样简单)