Codeigniter何时创建新的控制器/模型

时间:2018-05-06 02:49:07

标签: codeigniter

我已经观看了很多youtube指南/教程,但这些只是解决了编码部分。

每当我启动一个项目时,我总是从一个名为main的简单控制器开始。 和2个型号。

例如:如果我要开始一个在线商店项目。然后我的模型将是' product_model'和' user_model'。用户的所有数据库功能,我总是把它们放在' user_model'以及产品的所有数据库功能,我总是把它们放在&product;模型中。

user_model:

public function register(){

}

public function login(){

}

//more functions for user

product_model:

public function create_product(){

}

public function review_product(){

}

//more functions for product

我的问题是我很容易对我的项目感到困惑和/或对它的无组织感到不满意。特别是当我超过项目的一半时,我积累了数百行代码。

我可以尝试自己整理它们但是在一天结束时,我只是一个业余爱好者,所以我最终会怀疑自己。所以我没有完成1天的工作(或做工作,但一次又一次地重做)。然后那个雪球到明天和后一天等等。

所以我想向有经验的程序员询问一个基本的指导方针,何时创建新模型和新控制器?

如何对功能进行分组并将它们组合成一个单独的模型?

我是否为每张桌子制作一个新模型?我刚刚在为该表创建的新模型中编写了该表的所有数据库函数?

或者

我是否根据他们的工作对数据库功能进行分组?例如:购买产品涉及许多单独的数据库功能。所以在purchase_model中保存所有内容?

1 个答案:

答案 0 :(得分:2)

所有这些问题的答案是:取决于。就个人而言,我认为这种灵活性使编码变得如此有趣。

作为一般经验法则,我尝试将所有类别的代码和函数少于500-700行,少于20行代码。如果我的班级变得比我大,我通常会开始一个新班级。话虽如此,控制器我很好,随着表单验证和响应逻辑变大,可能会占用很多行。

让我们举一个例子:用户身份验证系统

我的控制器包含登录,注册,忘记密码和激活等功能;另一个用于用户管理的控制器,包含删除,禁止,取消,激活和创建新用户的功能;然后是用户个人资料的另一个控制器,其中包含编辑其详细信息和个人资料图片的功能。

现在,由于用户管理和身份验证系统通常可以重复使用,因此使用模型或模型会更好;但是让我们说我们使用模型。我将为上述段落中概述的每个控制器建立一个模型,然后为一般的“实用程序”函数建模,例如检查用户是否已登录。等等。

一般

你必须决定:

  1. 控制器/型号的代码数量是多少?
  2. (上面)我希望我的代码能够增长吗?如果是这样,那么在确定(1)时我必须考虑多少。
  3. 我应该如何将功能组合在一起?为此,请记住关注点的分离,例如auth函数不应与数据库备份函数分组。
  4. 我在特定的功能/模型中做得太多了吗?如果是这样,我应该如何分离这些项目以使我符合DRY原则(即使其功能本质上不同,某些代码也可能在其他地方重复使用)。
  5. (上面)如果这段代码在别处真的有用,我应该把它变成库/助手吗?
  6. (还有无数其他事情需要考虑)。

    我认为重要的是要意识到(特别是作为初学者)您的编码风格以及您使用的“技术”和组织技能将不断发展,您的代码也将如此。虽然很高兴看到你想要学习最佳实践 - 但这很大程度上取决于你想用你的应用程序实现的目标以及你在编码职业生涯中的掌握程度。试着看看更大的图片,并在一两年内再次看到你的代码,你可能会说“我甚至在想什么?”。

    旁注:您可以研究模型的ORM方法(Laravel和许多其他框架使用它),但CI对几乎所有内容都有更“无所谓”的方法。如果被迫以某种方式工作会让您感觉更安全,那么您可能希望学习其他“更高级”和“更新”的框架。