关于 php:如何避免 CodeIgniter 中的控制器代码臃肿? | 珊瑚贝

How to avoid bloating the controller code in CodeIgniter?


控制器在 MVC 模式中用于处理用户输入和输出。因此,输入验证和响应准备应该在控制器中完成。

例如,我有一个控制器方法 “save”,它:

  • 寻找输入数据
  • 对数据运行验证器
  • 如果输入有效,则加载适当的模型,将其字段设置为输入值,并调用其 save() 方法
  • 如果输入无效,准备数据以重新加载编辑表单,显示表单

所有这些序列都会产生相当混乱的线性代码。我想以某种方式将它分开。我是否将验证部分移至模型?听起来不对?我是否要创建一个特殊的”库”类来处理输入?

在 Asp.Net MVC 中这会更好,因为他们已经实现了”对象绑定器”模式。因此,验证和模型字段绑定消失了,控制器变得更轻了。 CodeIgniter 有类似的东西吗?


控制器进行验证并没有被广泛接受,我在模型中按照”保持模型胖,控制器瘦,视图哑”。

这取决于业务逻辑什么是有效的电话号码等等,所以只有在模型中才有意义。

  • 这听起来很有道理。我只需要接受模型类可能处于”无效”状态的想法——我一直试图只在我知道它是一个”合法对象”时才构建它。
  • @naivists,控制器可以检查是否有任何输入,如果没有则省去加载模型(和初始化数据库)的麻烦。但是任何实际的验证实际上都依赖于领域/业务逻辑,这就是为什么对我来说,将它放在模型中是有意义的。但是,对此没有达成共识,因此您需要适合自己。 :)
  • 尝试将”输入提取”和验证移动到模型类。看起来很不错,谢谢!


我会完全按照您所逃避的方式去做,并在您的模型中加入尽可能多的逻辑。 imo 确实应该使用控制器来启动服务和为视图准备数据。

您应该尽可能多地重复使用代码,即验证器、过滤器等。


来源:https://www.codenong.com/8261434/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?