在CodeIgniter中设计库

时间:2009-12-29 02:41:30

标签: php model-view-controller design-patterns codeigniter

我即将开始编写我的第一个大型CodeIgniter应用程序,但在开始之前,我想知道库的作用应该是什么。我是MVC的新手,但从我收集的模型应该是存储数据结构的地方(业务逻辑)。除了控制器之外,库是一个编写应用程序逻辑的地方吗?在图书馆中组合模型是一个好主意吗?

例如,我将编写一个具有配置文件和消息传递的成员管理系统。 MVC + L(库)设置应该是什么样的? 2个模型(配置文件,消息)和一个结合它们的库?每个对象的库?没有图书馆,只有模型和控制器?

4 个答案:

答案 0 :(得分:6)

CodeIgniter中的库只是PHP类。无论何时你通常都会编写PHP类,在CodeIgniter中你会写一个'Library。'

在大多数情况下,数据争用此类数据库调用或大规模数据操作应该放在模型中。显然,少量PHP的HTML进入视图,用户交互属于控制器。

您可能需要一个身份验证库,它将是一个PHP类。但是,您可以查看几个可用的开源库,例如Tank Auth和DX Auth。

经验法则:传统的PHP库通常是一堆相关的函数,比如日期函数,但在CodeIgniter中会是一个帮手。传统的PHP类/对象是CodeIgnter库。

永远不要害怕阅读system/helperssystem/libraries文件夹

中的源代码

答案 1 :(得分:0)

我建议只使用模型和控制器。我认为库是用于可以重用的逻辑,而不是特定于应用程序的库。我认为如果控制器和模型能够完成这项工作,那就去做吧。

答案 2 :(得分:0)

业务逻辑应该在控制器中,只有与数据库的交互才能进入模型。

我的问题我问自己哪里放东西很简单。我看看模型中的“ifs”。那些ifs是否检查数据?如果他们正在检查与数据库的交互是否成功,则代码就是它所属的位置。如果它检查返回的数据值,则可能是在错误的位置(并且应该进入控制器)。

正如扎克所说,带有次要PHP代码的HTML应该放在视图中。

图书馆更多用于支持课程。例如,我过去为一个特殊的日历创建了一个库(类)。

如果你甚至不需要课程,请把它放在帮手中。 (例如,因为你只有一个特定的字符串操作函数,但想在不同的地方使用它)

答案 3 :(得分:0)

我同意丹尼斯·德克内所说的话。但是经过一番思考之后,为什么auth库开发人员在他们的auth应用程序中创建了一个库和帮助程序的组合,与php类本质相比,他们的库正在执行更多“无关”的程序。