30% 的 Laravel 代码是由 Symfony 构成的
27

Laravel 很适合用来开发业务逻辑复杂的大型 Web 应用。我们知道Laravel 使用了大量的第三方扩展包,其中很大一部分就是 Symfony Components 。我为第三方包在 Laravel 中的使用比例非常好奇,所以就有了这篇文章。

创建项目

首先我们使用以下命令来安装 Laravel:

composer create-project --prefer-dist laravel/laravel my-project

安装成功后,可以看到 vendor/ 文件夹里的内容:

file

新安装的 Laravel 项目默认情况下 vendor/ 文件夹

解析 vendor/ 目录

我用知名的命令行工具 cloc 来统计 每个供应商目录下文件的行数。以下是用 cloc 统计 vendor/laravel/ 文件夹的输出样例:

$ cloc vendor/laravel/
907 text files.
901 unique files.
 67 files ignored.
T=6.57 s (127.8 files/s, 17502.6 lines/s)
......................................................................
Language   files   blank   comment    code
......................................................................
PHP          801   14423     49490   49404
JSON          30       0         0    1286
CSS            1      47        11     229
Javascript     6      19        45      38
SASS           2      11        11      25
......................................................................
SUM:         840   14500     49557   50982
......................................................................

在这个解析结果中,我们只关注 PHP 代码,所以我们忽略非 PHP 文件、空行和注释行。总而言之,Laravel 应用包含 49,404 行由 Laravel 自身提供的 PHP 代码。其他主要供应商的统计结果如图:

file

感谢这些统计数据,我们可以总结如下:

  • Laravel 应用默认有 373,345 行 PHP 代码。
  • 在 Laravel 应用中,有 13% 的代码来自 Laravel (49,404 行),还有 87% 来自第三方供应商 (323,941 行)。
  • 在 Laravel 应用中最大的供应商是 fzaninotto/,它提供了用以在测试中生成仿真数据的 Faker 类库。
  • 在 Laravel 应用中,有超过 29% 的代码来自 Symfony (108,407 行代码,其中 81,688 行来自 symfony/,还有 26,719 行来自 Symfony 官方邮件库 swiftmailer/)。

结论

这些统计数据显示了为什么PHP在这些年来一直保持胜利。而其他社区与美国国立卫生研究院(没有发明这里)综合征斗争,献出自己的资源推倒重来,PHP越来越多地遵循PFE(自由的在任何地方找到)理念。 composer和高质量的开源项目是这一现象的主要驱动因素,所以不要忘记感谢他们的工作!

竞争项目(如Laravel和Symfony)之间的这种合作为开发人员带来了许多好处,包括更温和的学习曲线和更丰富,更连接的生态系统。另外,对许多不同项目的同一个图书馆进行战斗测试对于为各种商业应用做好准备。这就是为什么Symfony组件[被大多数PHP项目使用](https://symfony.com/projects),并有[more than 1 billion downloads](https://symfony.com/blog/the-symfony-unicorn-1-billion-downloads)


Practice makes perfect.

原文地址:https://medium.com/@javiereguiluz/30-of-...

译文地址:https://laravel-china.org/topics/7462/30...

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 10

对的,一开始感到很奇怪,觉得"诶嘿,这框架里面怎么还有别的框架的东西"

9个月前
wujunze

站在巨人的肩膀上 才会看的更远

9个月前
Kurisu

同一个图书馆进行战斗测试 ...............

9个月前

Symfony才是大厂!

9个月前
Summer

@carlclone 我可没机译

7个月前
Summer

@carlclone 翻译是门技术活,要给大家点信心,会慢慢提高的

7个月前

cloc 好工具。。。。

7个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!