【问题标题】:Codeigniter: Controller too big, how to separate it into smaller chunks?Codeigniter:控制器太大,如何将其分成更小的块?
【发布时间】:2012-12-01 21:18:13
【问题描述】:

我遇到的问题是 my_controller.php 有超过 1000 行代码。虽然我在浏览它时没有问题,但我想将该控制器的一部分放在其他一些文件中。

更详细:

我有一个控制器,其中包含特定对象(及其子对象)的 CRUD 函数(不是模型函数、控制器函数,这意味着那里没有数据库查询)

现在,对于每个 CRUD,我都有一个用作控制器的函数(通过 url 访问的那个,如果是 Create 部分,它将准备一个表单),一个管理来自表单(获取 POST 并将其发送到验证,如果可以,则发送数据以进行进一步准备)和验证(通过回调验证数据)和准备(主要用于调用模型方法并向其发送准备好的数据数组)。

由于此控制器中所有对象的 CRUD 使用大部分相同的数据,它们共享许多功能。

所以我想创建特定的 .php 来存储验证、回调函数、准备等函数。

最好的方法是什么?

创建 CRUD 控制器时的常见过程或良好做法是什么?

我希望我足够清楚,我对语言和 php 编程的知识都相当有限。

【问题讨论】:

标签: php codeigniter controllers


【解决方案1】:

你有一个“胖”控制器。一种选择是查看可以轻松推送到模型的内容,以便您拥有“瘦控制器胖模型”。考虑模型的一种方法是它是您的数据库表以及如何使用该数据的业务规则。因此,诸如验证和数据准备之类的事情可以在模型中发生。然后控制器只是交出并收集对象和数组。并且模型可以直接调用其他模型。

如果您不喜欢这种方法,或者您需要更便携的东西,那么请使用库。要查看的另一件事是,您在不同的地方是否需要一些简短的位(技术术语)——看看将它们放在站点配置文件中。

【讨论】:

  • 我倾向于仅将模型用于数据库访问。我构建我的模型,使其不了解视图部分。
  • 我倾向于仅将模型用于数据库访问。我构建我的模型,使其不了解视图部分。我一直在考虑将我的每个控制器函数(在 url 中调用的函数)放在单独的 .php 和子文件夹中,这如何产生一些我必须定义路由等的问题......将会看到。
  • 只是为了澄清 - 我并不是说模型需要了解视图。恕我直言,控制器确定要调用的模型以及要发送到视图的内容。您想将数据验证等“介于两者之间”的方法放在哪里取决于您。
猜你喜欢
  • 2014-08-20
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 2022-10-13
  • 2012-07-12
  • 2022-10-29
相关资源
最近更新 更多