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

翻译 Summer ⋅ 于 1周前 ⋅ 最后回复由 boxcore 6天前 ⋅ 951 阅读 ⋅ 原文地址
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

Laravel 很适合用来开发业务逻辑复杂的商业应用。Laravel 的主体是由大量的第三方扩展包构建而成,其中 Symfony Components 就占了很大一部分。我为第三方包在 Laravel 中的使用比例非常好奇,所以就有了这篇文章。

创建项目

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

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

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

file

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

Summer 翻译于 1周前

分析 vendor/ directory

我用了知名的 cloc 命令行实用程序去统计每个 vendor 目录下行数. 下面是用 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的应用中包含自己的 PHP 代码一共 49,404 行.这些结果也实用于其他主要的 vendors:

file

鉴于上面的统计,我们可以得出以下结论:

  • Laravel 应用默认包含 373,345 行 PHP 代码.
  • 在 Laravel 应用中, 13% 的代码来源于 Laravel (49,404 行) 和 87% 第三方的 vendors (323,941 行).
  • 在 Laravel 应用中最大的单一包是 fzaninotto/, 它提供了用来在测试中生成逼真的数据.
  • 在 Laravel 应用中, 超过 29% 来源于 Symfony(108,407 行代码 = 81,688 来源于 symfony/ 和 26,719 来源于 swiftmailer/, swiftmailer是 symfony 的官方邮件 ).
sane 翻译于 1周前

查看其他 1 个版本

结论

这些统计数据显示了为什么 PHP 在这些年来一直保持长盛不衰. 当其它社区与 NIH (Not Invented Here) 综合征 斗争并将其资源投入到重新发明轮子中时, PHP 日益逐渐地遵循 PFE (Proudly Found Elsewhere) 哲学. Composer 和高质量的开源项目是这个现象的主要驱动因素, 所以不要忘了感谢他们的工作!

竞争项目 (例如 Laravel 和 Symfony) 之间的这种合作为开发人员带来了许多好处, 包括更温和的学习曲线和和更紧密的生态系统. 另外,battle-testing 对许多不同项目的同一个库进行测试为各种商业应用做好准备. 这就是为什么 Symfony 组件 被大多数PHP项目所使用 并且拥有 超过10亿次的下载.

GhostCoder 翻译于 1周前

查看其他 4 个版本

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

回复数量: 7
  • 梦康
    1周前

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

  • wujunze talk is cheap show me the code
    1周前

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

  • Kurisu
    1周前

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

  • wangwenli
    1周前

    增删改查代码

  • wangwenli
    1周前

    下午跟老公吵架,然后各回各家各找各妈。 结果我回去被我妈骂了一顿,赶了出来。 他被他爸踢了几脚,关在了门外。 结果我俩没等到晚上,就和好了!
    老婆:我患病卧床,你却到外面喝酒,还说是替我着想,我真不明白,你哪里有替我着想。 老公辩解说:这有什么不明白的,你有病卧床,我如果把人家约到家里来喝,你肯定很烦;我躲开你到外面去喝,还不是替你着想?

  • boxcore
    6天前

    Symfony才是大厂!

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