Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP-深度模型绑定vs使用_Cakephp_Model_Controller_Cakephp 2.0 - Fatal编程技术网

CakePHP-深度模型绑定vs使用

CakePHP-深度模型绑定vs使用,cakephp,model,controller,cakephp-2.0,Cakephp,Model,Controller,Cakephp 2.0,我最近读了一篇老文章,它是这样建议的 避免使用$uses数组您有两个完全不相关的模型,但您需要从另一个控制器中的一个获取信息。这个 第一个想法是将它们添加到$uses数组中。嘿,这很容易,而且 工作完成了。长话短说,这是个坏习惯。 考虑一下您的模型绑定,并确保模型不是真正的绑定 相互关联的。有时候你的用户模型肯定不是 与评论评级相关,但用户绝对需要它 控制器。嗯,只是碰巧看起来 用户->帖子->评论->评论评级。这是一个很深的束缚,可能不会 一开始很明显,但是通过使用这样的模型链,你可以 轻松避

我最近读了一篇老文章,它是这样建议的

避免使用$uses数组
您有两个完全不相关的模型,但您需要从另一个控制器中的一个获取信息。这个 第一个想法是将它们添加到$uses数组中。嘿,这很容易,而且 工作完成了。长话短说,这是个坏习惯。 考虑一下您的模型绑定,并确保模型不是真正的绑定 相互关联的。有时候你的用户模型肯定不是 与评论评级相关,但用户绝对需要它 控制器。嗯,只是碰巧看起来 用户->帖子->评论->评论评级。这是一个很深的束缚,可能不会 一开始很明显,但是通过使用这样的模型链,你可以 轻松避免使用$uses数组,因为它实际上是不必要的

为了可读性/可维护性,我倾向于将CommentRating放在uses数组中,然后直接调用$this->CommentRating


使用$uses数组真的是一种糟糕的做法吗?如果是,原因是什么?

那句话的篇幅太长了一点。为什么这是一种不好的做法?他甚至连一个理由都没说。我不会太注意它

我不是专家,但在某些情况下,代码的可读性和常识比一分钟的性能提升或避免使用$uses可能提供的任何东西都更重要。我将继续使用$uses,而不是像User->Post->Comment->Rating这样晦涩难懂的模型链


编辑:@tigrang补充道,在Cake 2中延迟加载模型,实际上并没有什么性能优势

那句话把长话短说了一点。为什么这是一种不好的做法?他甚至连一个理由都没说。我不会太注意它

我不是专家,但在某些情况下,代码的可读性和常识比一分钟的性能提升或避免使用$uses可能提供的任何东西都更重要。我将继续使用$uses,而不是像User->Post->Comment->Rating这样晦涩难懂的模型链


编辑:@tigrang补充道,在Cake 2中延迟加载模型,实际上并没有什么性能优势

那句话把长话短说了一点。为什么这是一种不好的做法?他甚至连一个理由都没说。我不会太注意它。我不是专家,但在某些情况下,代码的可读性和常识比一分钟的性能提升或避免使用$uses可能提供的任何东西都更重要。我将继续使用$uses,而不是像User->Post->Comment->Rating@joshua.paling,加上这个作为答案,我会很高兴地投赞成票:)它不好的原因是,即使你没有使用它,Cake也会加载该模型(对于1.x)。在Cake 2.x中实现了延迟加载,因此它不再是一个真正的问题(从性能角度来看)。@RobForrest OK谢谢,我添加了它作为一个答案。我不知道复制品是否会受到反对,但无论如何,这句话太长了,有点太短了。为什么这是一种不好的做法?他甚至连一个理由都没说。我不会太注意它。我不是专家,但在某些情况下,代码的可读性和常识比一分钟的性能提升或避免使用$uses可能提供的任何东西都更重要。我将继续使用$uses,而不是像User->Post->Comment->Rating@joshua.paling,加上这个作为答案,我会很高兴地投赞成票:)它不好的原因是,即使你没有使用它,Cake也会加载该模型(对于1.x)。在Cake 2.x中实现了延迟加载,因此它不再是一个真正的问题(从性能角度来看)。@RobForrest OK谢谢,我添加了它作为一个答案。不知道复制品是否会受到反对,但无论如何。