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

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-unico...)

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

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

译文地址:https://learnku.com/laravel/t/7462/30-of...

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9

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

6年前 评论
Kurisu

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

6年前 评论

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

6年前 评论

Symfony才是大厂!

6年前 评论
Summer

@carlclone 我可没机译

6年前 评论
Summer

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

6年前 评论
幽弥狂

cloc 好工具。。。。

6年前 评论

@Summer 机器翻译:"此外,在许多不同的项目中对相同的库进行战场测试,可以使它们为各种业务应用程序做好准备。" 还是机器翻译更准些................

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!