如何有效重构Laravel应用程序代码

时间:2019-02-04 19:18:42

标签: laravel laravel-5

由于一些问题,我能够重构laravel 5.4应用程序代码:代码复杂性,缺乏oo设计经验等。

我已阅读到控制器代码应尽可能短(据称它们是粘合代码部分)。

Q1:我有一些类似代码的库。这些库函数/类应该在相关的Model类中,或者我应该具有使用Model类的额外类吗?

Q2:如果我不需要额外的类(因此模型类就足够了),我应该从刀片文件还是从控制器调用这些业务逻辑? (控制器中的业务逻辑使其变得非常庞大和复杂。)

示例:在控制器功能中,我通过查询评估帖子数据集。之后,我需要为每个帖子(例如Column <: Any)提供一些业务逻辑。我应该从控制器中调用它并将其传递到相关视图,还是从刀片文件中调用它。

谢谢。

1 个答案:

答案 0 :(得分:0)

我将根据今天本身的最新标准开始重构我的整个Laravel应用程序。这是理想的Laravel应用程序的结构或创建方式。

注意:这些不是硬性规定,但是如果您以这种方式进行结构化,则可以更轻松地维护Laravel应用程序以用于将来的更新。

控制器: 控制器应该具有创建,读取,更新和销毁特定模型的这些方法。为简单起见,假设我们的模型是产品

  • index()-将返回产品列表。
  • create()-将显示用于创建模型的表单。 (如果需要)
  • store()-它将存储来自创建表单的产品信息。
  • show()-将返回特定产品。
  • edit()-它将显示一个用于编辑任何产品的表格。
  • update()-它将更新任何特定产品。
  • destroy()-它将删除特定产品。

路线:对于不同的模型,路线将遵循相同的模式。这是将针对特定型号(在这种情况下为产品)的控制器中的上述给定功能调用的路线。

  • /产品-GET-ProductController @ index
  • / products / create-GET-ProductController @ create
  • /产品-POST-ProductController @ store
  • / products / {id}-GET-ProductController @ show
  • / products / {id} / edit-GET-ProductController @ edit
  • / products / {id}-补丁-ProductController @ update
  • / products / {id}-删除-ProductController @ destroy

模型:现在,所有与数据库有关的所有内容(查询,复杂查询,关系)都将存储在模型中(在本例中为app / Product.php)。在模型中没有可以使用的指定功能。因此,您可以将所有查询和来自查询的处理数据作为函数存储在模型中。

视图:最基本的模型将需要createeditindexshow视图。在视图目录中,您可以为不同的模型创建不同的目录。在这种情况下,视图目录中将存在一个名为 products 的目录,其中将包含上述所有视图以及可能需要的其他视图。

我在Laravel中处理了一些非常复杂的应用程序。这就是我遵循的结构,以避免在创建或更新应用程序代码时造成任何混乱。我什至不必记住我在某些视图中使用的随机名称,因为所有内容都经过适当结构化,并且完全基于控制器的名称。

某些控制器不需要所有这些路由和功能,在这种情况下,您仍然可以遵循此方法而不会感到困惑。