0

我有几个星期以来,使用CI IM,但现在我发现我的项目结构的一些问题,我想有人给我一些线索,因为我有点卡住了,问题是这样的:什么是codeigniter项目的最佳结构以及如何使用它?

我有我的项目MVC,所以,我将它分成文件(每个功能),例如,有一个文件的所有功能对应登录,其他与所有相关的后(这是一个例子),但现在我当我需要使用登录或发布到项目的另一部分时,阅读我发现我不能从另一个控制器调用控制器,我可以使用帮助器,但仍然需要使用模型,所以我必须把这段代码粘贴到我调用模型的控制器中,等等(并且它不是很好),我发现我可以使用模块,但我不希望直到有人可以使用模块给我一个这方面的经验,我不想改变项目,是任何方式我可以运行所有这些控制器(我知道我可以使用run ::我不知道如果我可以发送参数),任何想法请?

在此先感谢。

回答

2

公平的警告,这种类型的问题,也会受到SO版主得到击落,但我会给你不管一些提示:

  1. 控制器的行动是一次性使用的。如果您发现自己在多个控制器中出现重复代码(或者需要从另一个控制器调用控制器函数),那么您肯定应该将该代码移动到模型或库中。

  2. 模型是特定于对象的,而不是特定于操作的。除非您有多种类型的登录(大部分应用/网站只有成员登录,但您可能有管理员等存储在与其他表不同的表中),否则我不会有专门用于登录的模型。相反,有一个User_model类,并使function login($email, $password)该类的一种方法。

  3. 控制器到模型的交互应该非常简洁。如果你发现自己有30行代码在同一个控制器和模型之间来回传递数据,那么你可能会试图用一个控制器动作来做太多事情。

  4. 保持你的模型脂肪,控制器,并享有

+0

感谢...还是犯规给我结构的想法...如果我将代码移到一个库,我不能叫我的模型从它...我需要更多的像一个模块... – jpganz18 2012-03-01 23:09:54

+0

是您可以。你有全局的'get_instance()'助手可以从你的代码中的任何地方访问任何加载的模型或库... – landons 2012-03-01 23:20:42

+0

更好的是,如果你的库中的代码依赖于模型,它可能不应该在图书馆,但在模型中... – landons 2012-03-01 23:22:01

相关问题