【问题标题】:Laravel single vs multiple controllers & db row vs columnLaravel 单控制器 vs 多控制器 & db 行 vs 列
【发布时间】:2016-05-11 11:32:10
【问题描述】:
- 假设每天有 2 万人使用我的 laravel 应用。我创建了一个包含大约 200 种方法的控制器。另一方面,我创建了 20 个控制器,每个控制器有 10 个方法。哪种方法更好?它会影响应用的性能吗?
- 假设我要存储每个用户的 5 个投资组合图像。我可以想到2种方法。一个是为表格上的每个投资组合图像插入一行 -> 包含
id | user_id | portfolio 另一个是创建 5 列 -> id | user_id | portfolio_1 | portfolio_2 | ... etc 哪个是更好的方法?
【问题讨论】:
标签:
php
mysql
database
laravel
model-view-controller
【解决方案1】:
一般来说,一个有 200 个方法的控制器太多了……考虑SOLID 的 SRP(单一职责)原则。
一般来说,正确地规范化你的数据库要比为每个投资组合都有编号的列要好得多......当有人想要添加比你有编号的列更多的投资组合时会发生什么?使用编号列会限制您,迫使您在决定增加数据库结构时更改它;正确规范化的数据库不会限制您,无需更改代码或数据库(可能是配置设置除外)
【解决方案2】:
对于每次调用的200个方法控制器,php语法解析器都要解析整个控制器。而对于 20 方法控制器,语法解析器解析的代码量更少,因为我们通常一次调用一个控制器。
如果更可取,对于存储第一种方法的投资组合图像。
因为在为第一种方法显示它们时,您可能可以遍历 $user->portfolio() 并在 html 中显示它们。
但是对于第二种方法,您必须编写几乎相同的 html 5 次。对于第一种方法,您也可以随时增加投资组合图像的数量。