在Asp.NET应用程序中,存储库和控制器之间有一个服务层,因此应用程序的不同部分可以使用相同的逻辑,而当一个部分发生更改时没有任何不一致。
例如,在CodeIgniter中,如果应用程序的一部分响应REST API调用,我需要实现Account控制器中使用的相同逻辑进行身份验证。如果有像UserService这样的东西,那就太容易了。
我要问的是,你认为这种方法对于CodeIgniter是否有意义,如果已经有一个构建的功能覆盖了它,如果没有,那么最好的方法是什么?我应该使用库创建我的库,它就像一个服务层?我应该把所有东西都放入模型中(可能不是)吗?或者,CodeIgniter不适合那些需要这种复杂性的应用吗?
我需要你对此有所了解。谢谢你的帮助。
答案 0 :(得分:4)
CodeIgniter可以完美地处理这个问题。想法是Controller是处理逻辑的请求的主要部分吗?因此,当用户点击URL时,他们会转到控制器,控制器决定向他们显示数据,将其重定向到某处或告诉他们推迟。
要在整个应用程序中共享逻辑,您可以创建一个MY_Controller(扩展主CI_Controller类),然后这将为每个控制器运行。如果你想更具体,并且有不同类型的控制器加载不同的基本控制器,那么你可以。
http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
答案 1 :(得分:1)
您可以使用父控制器保持DRY。 PHP不支持任何类型的mixins或多继承,因此能够向一个或多个控制器添加通用功能并不容易。
就身份验证而言,据称这是EllisLabs等人正在为CodeIgniter 2.0进行的工作之一。他们已经提到过这是一项相当困难的任务,我认为这更多地证明了PHP作为一种动态语言而不是CodeIgniter不适合这种事情。
如果你还没有与PHP / CI结婚,那么翻阅Ruby on Rails提供的内容可能会有所帮助。所有这些身份验证都是通过mixins和metaprogramming以非常优雅和灵活的方式处理的。