Laravel-将模型扩展到控制器


Laravel - extending models to controller

将模型扩展到控制器是个好主意吗?

比如说我想保护模型中的函数而不是公共函数,然后将我的模型扩展到控制器,以便控制器仍然可以调用这些函数?

这是一件好事吗?还是我应该将它们公之于众?

不,不要那样做!这违背了MVC的整个目标。将模型中的所有函数保留为公共,除非它们仅供该模型或相关模型使用。在这种情况下,它们可以分别是私有/受保护的。

如果将模型

扩展到控制器,则控制器将变为模型。

我无法想象控制器如何"扩展"您的模型。例如,您可以扩展 Eloquent 模型,并创建继承模型,例如:

class ModelB extends ModelA
{
 // code
}

class ModelA extends Eloquent
{
protected $something;
//code
}

然后在控制器中相应地使用它们。您的控制器扩展了不同的类,即 BaseController,并且具有与模型不同的用途。所以短的asnwer是不行的。