j8typz 发表于 2024-10-5 10:50:11

2019年了,PHP已再亦不是当年那个“设计糟糕”的语言


    <div style="color: black; text-align: left; margin-bottom: 10px;">
      <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/1fa9c505d5fc4a93a76f2b54beebd74f~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728304846&amp;x-signature=bxsoHbX3G6Q0NZQ8cNVn4unBzro%3D" style="width: 50%; margin-bottom: 20px;"></div>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">作者 | Brent</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">译者 | 张兰月</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">这篇<span style="color: black;">文案</span>不在于<span style="color: black;">处理</span>关于 PHP 的那个永恒<span style="color: black;">专题</span>,而是想让你<span style="color: black;">认识</span>,PHP 在这些年的<span style="color: black;">发展</span>以及<span style="color: black;">哪些</span>值得关注的特性与发展<span style="color: black;">状况</span>。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">之前,有一篇非常流行的博客<span style="color: black;">文案</span>是“PHP:<span style="color: black;">哪些</span>糟糕的设计”,<span style="color: black;">第1</span>次读到这篇博客的时候,我正在一个非常破旧的<span style="color: black;">地区</span>工作,处理着许多 PHP 遗留项目。这篇博客对我触动很深,我<span style="color: black;">起始</span>思考<span style="color: black;">是不是</span>要停止编程,换一份完全<span style="color: black;">区别</span>的工作。<span style="color: black;">文案</span><span style="color: black;">位置</span>:</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">幸运的是,<span style="color: black;">火速</span>我就换了一份工作,而 PHP 在 5.X 版本之后又有了<span style="color: black;">非常多</span>新的改进。今天,我要向<span style="color: black;">哪些</span><span style="color: black;">再也不</span><span style="color: black;">运用</span> PHP 编程,<span style="color: black;">或</span>陷入遗留项目的人致敬。</p>剧透:直到今天,PHP 仍有<span style="color: black;">非常多</span>糟糕的东西,例如许多核心功能仍然存在不一致的<span style="color: black;">办法</span>签名,仍然存在令人混淆的配置设置,仍然会有<span style="color: black;">有些</span><span style="color: black;">研发</span>者<span style="color: black;">由于</span>知识的缺乏而<span style="color: black;">引起</span>写的代码很糟糕等等。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">然则</span>,本文我想把目光集中在 PHP <span style="color: black;">已然</span>改进的<span style="color: black;">地区</span>上面,以及<span style="color: black;">怎样</span>写出更加干净和易<span style="color: black;">守护</span>的 PHP 代码。<span style="color: black;">亦</span>许你不会改变对 PHP 的看法,但<span style="color: black;">特别有</span>可能,你会惊讶于过去几年 PHP 的进步。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">要 点</h1>PHP 每年都会推出一个新的版本;自 PHP 5 代之后,其性能<span style="color: black;">持续</span><span style="color: black;">提高</span>;有框架、包和平台<span style="color: black;">构成</span>的活跃生态系统;过去几年间,PHP 添加了许多新的特性,且<span style="color: black;">此刻</span>仍在<span style="color: black;">连续</span>演进;许多工具如静态分析器<span style="color: black;">亦</span>越发成熟,<span style="color: black;">将来</span><span style="color: black;">亦</span>将继续发展。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">更新:<span style="color: black;">非常多</span>人<span style="color: black;">期盼</span>我能够展示一下<span style="color: black;">实质</span>代码,这是我其中一个业余项目的源代码,它是用 PHP 和 Laravel 写的,<span style="color: black;">另一</span>还有一个是<span style="color: black;">咱们</span>在办公室负责<span style="color: black;">守护</span>的上百个 OSS 包的列表。</p>https://github.com/brendt/aggregate.stitcher.iohttps://spatie.be/open-source/packages<h1 style="color: black; text-align: left; margin-bottom: 10px;">回顾历史</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">让<span style="color: black;">咱们</span>先快速回顾一下 PHP 的版本发布周期。<span style="color: black;">此刻</span> PHP 的版本是 7.3,预计 2019 年末将发布 PHP 7.4,7.4 之后的版本将会是 PHP 8.0。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">从 5.X 版本之后,PHP 核心团队<span style="color: black;">始终</span>在<span style="color: black;">奋斗</span>每年发布一个新版本,并且在过去的 4 年间,这一<span style="color: black;">目的</span><span style="color: black;">始终</span>完成得很好。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">大致<span style="color: black;">来讲</span>,<span style="color: black;">每一个</span>新版本都会用 2 年时间进行积极地支持,<span style="color: black;">而后</span>用一年进行“安全修补”工作。<span style="color: black;">这般</span>做的目的是<span style="color: black;">促进</span> PHP <span style="color: black;">研发</span>者尽可能保持最新状态,例如每年都升级比从 5.4 直接跳到 7.0 要简单得多。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">PHP <span style="color: black;">详细</span>的版本发布<span style="color: black;">状况</span>,<span style="color: black;">能够</span>查看:</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">https://www.php.net/supported-versions.php</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">搞清楚 PHP 的发展历程后,<span style="color: black;">咱们</span>来谈谈<span style="color: black;">大众</span>对 PHP 的<span style="color: black;">平常</span>误解。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">PHP 的性能</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在 5.X 版本时代,PHP 的性能平均而言是最好的。而在 7.0 时代,大部分的 PHP 核心都从零<span style="color: black;">起始</span>重写了,其性能能够达到之前的 2-3 倍。口说无凭,幸运的是,有人花了<span style="color: black;">海量</span>时间来<span style="color: black;">测绘</span> PHP 的性能,Kinsta <span style="color: black;">供给</span>了一个很好的更新列表。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">从 7.0 版本<span style="color: black;">败兴</span>,PHP 性能就只升不降。PHP web 应用的性能<span style="color: black;">能够</span>和其他语言 web 框架的性能相提并论,<span style="color: black;">乃至</span>更高。<span style="color: black;">详细</span>测试<span style="color: black;">状况</span>可查看:</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">https://github.com/the-benchmarker/web-frameworks</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当然,PHP 框架的性能还<span style="color: black;">没法</span>超越 C 和 Rust,<span style="color: black;">然则</span>要比 Rails 或 Django 好,且能够和 ExpressJS 相媲美。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">框架和生态系统</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在谈到框架时,PHP <span style="color: black;">已然</span><span style="color: black;">再也不</span>只是 WordPress 了。<span style="color: black;">做为</span>职业的 PHP <span style="color: black;">研发</span>者,我认为,WordPress <span style="color: black;">没法</span>从任何层面<span style="color: black;">表率</span>当今的生态系统。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">总体<span style="color: black;">来讲</span>,有 2 个<span style="color: black;">重点</span>的 web 应用框架以及<span style="color: black;">有些</span>相对而言较小的框架,如 Symfony 和 Laravel。除此之后,还有 Zend、Yii、Cake、 Code Igniter 等等。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">倘若</span>你想<span style="color: black;">认识</span>现代 PHP <span style="color: black;">研发</span><span style="color: black;">到底</span>是什么样子,<span style="color: black;">那样</span>就需要<span style="color: black;">把握</span> Symfony 和 Laravel 中的一个,这 2 个框架都有庞大的生态系统,<span style="color: black;">包括</span><span style="color: black;">各样</span>包和<span style="color: black;">制品</span>。从管理面板和客户关系管理系统 (CRM) 到单独的包,从<span style="color: black;">连续</span>集成 (CI) 到性能<span style="color: black;">监测</span>工具,<span style="color: black;">咱们</span><span style="color: black;">有没有</span>数的服务如 web 套接字服务器、队列管理器、支付集成等等。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">然则</span>,这些框架都是为<span style="color: black;">实质</span><span style="color: black;">研发</span>而设计的。<span style="color: black;">倘若</span>你需要纯粹的内容管理,WordPress 和 CraftCMS 是理想<span style="color: black;">选取</span>,<span style="color: black;">况且</span>它们还会<span style="color: black;">持续</span>优化。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">衡量 PHP 生态系统<span style="color: black;">日前</span>状态的<span style="color: black;">办法</span>是看一看 Packagist,它是 PHP <span style="color: black;">重点</span>的包仓库。在过去的时间里,它呈现出了指数式增长的态势,<span style="color: black;">每日</span> 2500 万<span style="color: black;">上下</span>的下载量,足以说明 PHP 生态系统<span style="color: black;">已然</span><span style="color: black;">再也不</span>是过去那种弱者了。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Packagist 网站上列出了过去的包和版本数量:</p>
      <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/80dd6cd5a5bc4a5a9425245cf1ce4fb5~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728304846&amp;x-signature=NzFId2SWWEmWt1IxJNGRrMz6qGY%3D" style="width: 50%; margin-bottom: 20px;"></div>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">除了应用框架和内容管理系统 (CMS) 以外,<span style="color: black;">咱们</span>还<span style="color: black;">发掘</span>,在过去几年,异步框架<span style="color: black;">亦</span>崛起了。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">异步框架<span style="color: black;">指的是</span>用 PHP 或其它语言编写的框架和服务器,它们能够让用户运行真正异步的 PHP。异步框架的例子<span style="color: black;">包含</span>:Swoole、Amp 和 ReactPHP。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因为</span><span style="color: black;">咱们</span><span style="color: black;">已然</span>进入异步<span style="color: black;">行业</span>,<span style="color: black;">拥有</span><span style="color: black;">海量</span> IO 的 web 套接字和应用等东西在 PHP 世界中就变得非常重要。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">另一</span>,人们还谈到了内部邮件列表,在邮件列表中,PHP 核心<span style="color: black;">研发</span>者讨论了 PHP 语言的进一步发展,例如<span style="color: black;">增多</span> libuv 到核心之中。<span style="color: black;">针对</span>不<span style="color: black;">熟练</span> libuv 的人<span style="color: black;">来讲</span>,libuv 同 Node.js 用于实现其所有异步性的库一模<span style="color: black;">同样</span>。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">语言本身</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">尽管异步 (async) 和等待 (await) 还未面市,但 PHP 在过去几年<span style="color: black;">已然</span>经过了许多改进,下面便是 PHP 新特性的不完全列表:</p>短闭包https://stitcher.io/blog/short-closures-in-php空合并运算符https://stitcher.io/blog/shorthand-comparisons-in-php#null-coalescing-operatorTraitshttps://www.php.net/manual/en/language.oop5.traits.php属性类型https://stitcher.io/blog/new-in-php-74#typed-properties-rfc扩散运算符https://wiki.php.net/rfc/argument_unpackingJIT 编译器https://wiki.php.net/rfc/jitFFIhttps://wiki.php.net/rfc/ffi匿名类https://www.php.net/manual/en/language.oop5.anonymous.php声明返回类型https://www.php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration现代<span style="color: black;">秘码</span>学https://wiki.php.net/rfc/libsodiumGeneratorshttps://wiki.php.net/rfc/generators其他https://www.php.net/ChangeLog-7.php<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">尽管<span style="color: black;">咱们</span>的主题是 PHP 的语言特性,但我还是觉得需要谈一下 PHP 语言的<span style="color: black;">研发</span>流程。虽然社区被<span style="color: black;">准许</span>提出 RFC,但仍有一个活跃的志愿者核心团队在推动 PHP 的发展。在添加一个新的语言特性之前,必须要进行投票。<span style="color: black;">仅有</span><span style="color: black;">得到</span> 2/3 <span style="color: black;">都数</span>选票的 RFC <span style="color: black;">才可</span>被添加到核心中。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">大<span style="color: black;">大概</span> 100 个人<span style="color: black;">能够</span>投票,但你不需要给<span style="color: black;">每一个</span> RFC 投票。核心团队的成员毋庸置疑能够投票,<span style="color: black;">由于</span><span style="color: black;">她们</span>必须<span style="color: black;">守护</span>代码库。除了<span style="color: black;">她们</span>以外,还有一群人是单独从 PHP 社区中挑选出来的,这些人员<span style="color: black;">包含</span> PHP 文件的<span style="color: black;">守护</span>人员,PHP 整体项目的贡献者,以及 PHP 社区中颇具威望的<span style="color: black;">研发</span>者。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然大<span style="color: black;">都数</span>核心<span style="color: black;">研发</span><span style="color: black;">是由于</span>志愿者<span style="color: black;">构成</span>的,但其中一名核心 PHP <span style="color: black;">研发</span>者 Nikita Popov 近期被 JetBrains 雇佣,并全职负责该语言的<span style="color: black;">研发</span>。<span style="color: black;">另一</span>一个例子是 Linux 基金会决定投资 Zend 框架。<span style="color: black;">以上</span>这些雇佣和收购<span style="color: black;">行径</span><span style="color: black;">保证</span>了<span style="color: black;">将来</span> PHP <span style="color: black;">研发</span>的稳定性。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">工 具</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">除了核心本身,<span style="color: black;">咱们</span>还目睹了过去几年间工具的增长。<span style="color: black;">首要</span>进入我脑海的是静态分析器如 Vimeo 发明的 Psalm,以及 Phan 和 PHPStan。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">这些工具能够静态分析 PHP 代码,并且报告打字错误、可能的 bug 等等。在某些方面,它们<span style="color: black;">供给</span>的功能足以和 TypeScript 相媲美,但<span style="color: black;">日前</span> PHP 还<span style="color: black;">无</span>被转编译 (transpile),<span style="color: black;">因此呢</span>它并不支持定制句法。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然这<span style="color: black;">寓意</span>着<span style="color: black;">咱们</span>必须依赖于文档块,但 PHP 的最初发明者 Rasmus Lerdorf 提出了将静态分析引擎添加到核心之中的想法。这个想法<span style="color: black;">潜能</span>巨大,但任务量着实不小。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">说到</span>转编译,<span style="color: black;">因为</span>受到 JavaScript 社区的启发,有许多人试图将 PHP 句法延伸到用户空间中。一个名叫 Pre 的项目就做了这件事情:它支持新的<span style="color: black;">已然</span>转编译为普通 PHP 代码的 PHP 句法。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然这一想法<span style="color: black;">已然</span>在 JavaScript 中得以实现,但<span style="color: black;">仅有</span>在<span style="color: black;">供给</span>了适当的集成<span style="color: black;">研发</span>环境 (IDE) 和静态分析支持后,它<span style="color: black;">才可</span>在 PHP 工作。这一想法非常有趣,但还必须<span style="color: black;">持续</span>完善,<span style="color: black;">才可</span>变成“主流”。</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">结束语</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">尽管 PHP 还有<span style="color: black;">非常多</span>缺点和遗留问题,但我<span style="color: black;">能够</span>充满<span style="color: black;">自信心</span>地说,我<span style="color: black;">爱好</span><span style="color: black;">运用</span>它。就我的经验来看,它<span style="color: black;">能够</span>创建<span style="color: black;">靠谱</span>、可<span style="color: black;">守护</span>和高质量的软件。<span style="color: black;">倘若</span><span style="color: black;">运用</span>得当,PHP <span style="color: black;">针对</span> web <span style="color: black;">研发</span><span style="color: black;">来讲</span>是个非常棒的<span style="color: black;">选取</span>。</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"> 英文原文</p>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">https://stitcher.io/blog/php-in-2019</p>
      <h1 style="color: black; text-align: left; margin-bottom: 10px;">彩蛋一</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">外链</span><span style="color: black;">博客</span>是国内<span style="color: black;">运用</span> PHP 语言的<span style="color: black;">表率</span>之一,前<span style="color: black;">外链</span><span style="color: black;">博客</span>首席架构师惠新宸<span style="color: black;">便是</span> PHP <span style="color: black;">研发</span>组的核心成员。2016 年,InfoQ 编辑约稿了<span style="color: black;">外链</span><span style="color: black;">博客</span>,分享了<span style="color: black;">外链</span><span style="color: black;">博客</span>的 PHP 7 升级实践以及选型思路。<span style="color: black;">文案</span>年代虽然较为久远了,但<span style="color: black;">背面</span>的思路和实践细节依旧值得参考,感兴趣的<span style="color: black;">朋友</span><span style="color: black;">能够</span>在 InfoQ 公众号对话框回复关键词:<strong style="color: blue;">PHP</strong>,获取<span style="color: black;">文案</span>详情。</p>请在 InfoQ 公众号对话框回复关键词,留言区回复<span style="color: black;">没法</span>接收的哟!<h1 style="color: black; text-align: left; margin-bottom: 10px;">彩蛋二</h1>
      <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">QCon <span style="color: black;">全世界</span>软件<span style="color: black;">研发</span>大会广州站正在火热进行中,<span style="color: black;">咱们</span>为 InfoQ 的读者汇总了大会 PPT,回复关键词:<strong style="color: blue;">PPT</strong>,<span style="color: black;">就可</span>下载!</p>
      <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/0b50e0b1012d476a86c2a7d24b103b2e~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728304846&amp;x-signature=n1nLSYbDBEbUTB%2B%2Fd9fIsnGamwk%3D" style="width: 50%; margin-bottom: 20px;"></div>
    </div>




b1gc8v 发表于 2024-10-19 09:21:36

楼主的文章深得我心,表示由衷的感谢!
页: [1]
查看完整版本: 2019年了,PHP已再亦不是当年那个“设计糟糕”的语言