如何在CakePHP中重构更好的模型函数?

我正在阅读编程最佳实践,据说在创建函数时我们应该让它只做一个特定的任务.

我有模型函数来检索数据及其相关数据.例:

$这 – >学生为> StudentAssignments();

目前,此功能检索学生的作业以及每个作业的问题和有关学生的数据.我全部使用它们.我的困境是,如果我尝试制作单独的函数来检索相关数据(学生和问题数据),那么它就会产生更多的DB调用.

你们会建议什么?

最佳答案 在进行这种重构时要记住一些事情……

我通常会在模型中使用Model-> getSomethingAndSomethingElse函数.
这些函数是公共的,可以被称为代替从Controller执行复杂(或任何)查找调用.

我通常会做的是在模型中建立一小部分私有函数.
在你的情况下,我可能会有……

学生为> getStudentAssigmentsWithQuestions

然后调用一些私人功能,即

Student-> getStudent可能会调用Student-> joinStudentAssignment,后者可能会调用Assignment-> joinAssignmentQuestion等.

双下划线前缀已被删除,因为降价因为它们而需要加粗.如果您使用的是php5,只要您使用“私有”或“保护”关键字,下划线就不是很重要.

基本上我使用public方法作为一组非常具体的查询构建或建立模型内私有函数的关联的容器.这允许我有一个返回复杂数据的api,但是我从小块构建查询或结果集(取决于数据的类型,涉及的关系或查询复杂性) – 理想情况下可以用于超过一个公共函数调用.

点赞