由于一些问题,我能够重构laravel 5.4应用程序代码:代码复杂性,缺乏oo设计经验等。
我已阅读到控制器代码应尽可能短(据称它们是粘合代码部分)。
Q1:我有一些类似代码的库。这些库函数/类应该在相关的Model类中,或者我应该具有使用Model类的额外类吗?
Q2:如果我不需要额外的类(因此模型类就足够了),我应该从刀片文件还是从控制器调用这些业务逻辑? (控制器中的业务逻辑使其变得非常庞大和复杂。)
示例:在控制器功能中,我通过查询评估帖子数据集。之后,我需要为每个帖子(例如Column <: Any
)提供一些业务逻辑。我应该从控制器中调用它并将其传递到相关视图,还是从刀片文件中调用它。
谢谢。
答案 0 :(得分:0)
我将根据今天本身的最新标准开始重构我的整个Laravel应用程序。这是理想的Laravel应用程序的结构或创建方式。
注意:这些不是硬性规定,但是如果您以这种方式进行结构化,则可以更轻松地维护Laravel应用程序以用于将来的更新。
控制器: 控制器应该具有创建,读取,更新和销毁特定模型的这些方法。为简单起见,假设我们的模型是产品:
路线:对于不同的模型,路线将遵循相同的模式。这是将针对特定型号(在这种情况下为产品)的控制器中的上述给定功能调用的路线。
模型:现在,所有与数据库有关的所有内容(查询,复杂查询,关系)都将存储在模型中(在本例中为app / Product.php)。在模型中没有可以使用的指定功能。因此,您可以将所有查询和来自查询的处理数据作为函数存储在模型中。
视图:最基本的模型将需要create
,edit
,index
和show
视图。在视图目录中,您可以为不同的模型创建不同的目录。在这种情况下,视图目录中将存在一个名为 products 的目录,其中将包含上述所有视图以及可能需要的其他视图。>
我在Laravel中处理了一些非常复杂的应用程序。这就是我遵循的结构,以避免在创建或更新应用程序代码时造成任何混乱。我什至不必记住我在某些视图中使用的随机名称,因为所有内容都经过适当结构化,并且完全基于控制器的名称。
某些控制器不需要所有这些路由和功能,在这种情况下,您仍然可以遵循此方法而不会感到困惑。