2011-07-15 60 views
0

我需要访问CodeIgniter应用程序中多个控制器中的一些功能。在瞬间的功能是很基本的并不在少数,例如:我应该扩展Controller还是Create Helper?

 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

OR

我可以通过创建MY_Controller.php延长是CI_Controller,并把它放在Application/Core/MY_Controller.php

这两种方法的工作,但我想知道whic一个适合这种任务更好。我认为应该有一些规则,当控制器应该延长或应该使用助手的时候?

回答

0

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

另一方面,你可以创建一个认证库。这可能是更适合..

编辑::

我会建议有一个MY_Controller作为基础,所有包含auth包装的功能,从管理这种类型的东西图书馆调用功能。

+0

generate_random_key也许应该留在助手虽然 – jlb

+0

是,比如我需要检查,如果用户在不同的控制器登录与否。 – Roman

+0

我喜欢在MY_Controller构造函数中设置auth检查。这样,任何控制器都不会扩展它,会自动获得一个验证检查。另外,你可以设置它以便一些控制器不需要它(通过一些访问控制规则,或者可能像构造器参数一样简单) – jlb

1

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

0

解决方案余米想:

如果你想遵循的设计模式,使用hook(就像从Java透视图的过滤器)。

备用应该延长您My_Controller

相关问题