欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

「最好的语言」PHP在2019年:缺点还有,但会变得更好

时间:2022-11-03 07:33:17 | 浏览:15114

PHP 是一种开源的通用计算机脚本语言,适用于网络开发并可嵌入 HTML 中使用。它的语法借鉴吸收 C 语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。但是由于太难用,也是被很多人吐槽的一种语言。下面,来看看这位曾

PHP 是一种开源的通用计算机脚本语言,适用于网络开发并可嵌入 HTML 中使用。它的语法借鉴吸收 C 语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。但是由于太难用,也是被很多人吐槽的一种语言。下面,来看看这位曾经觉得 PHP 槽点满满的作者怎么说……

2012 年有一篇很火的博客:PHP: a fractal of bad design。作者在文中对 PHP 大张挞伐,几乎就差说这是反人类的设计了。第一次读到此文时,我正在一个恶心的地方处理很多遗留的 PHP 项目。读完文章时,我开始思考是否要辞职去做一些与编程完全不同的事情。

幸运的是,此后不久我就换了工作,而且 PHP 从 5.* 开始也成长了很多。今天,我想对那些不再使用 PHP 编程,或者被遗留项目困扰的人说点什么。

Spoiler:PHP 跟其他编程语言一样,都有点自己的小毛病。很多核心函数的方法签名不一致,配置设置仍然不清不楚,仍然有很多开发人员在写蹩脚的代码——因为他们必须这样做,或者说,他们没有更好的方法。

但今天,我想说的是 PHP 好的一面:看看 PHP 的成长,共同探讨一下如何编写干净且可维护的 PHP 代码。希望大家可以暂时把偏见放进肚子里,哪怕只有几分钟。等我说完,你可以把它们再拿出来,但是你一定会惊讶于过去几年里 PHP 的成长。

快速阅读

  • PHP 每年都在积极开发新版本

  • 自 PHP 5 时代以来,性能至少翻了一番,甚至有可能是曾经的三倍

  • 有极其活跃的框架、包和平台生态系统

  • 过去几年增加了很多新特性,语言也在不断发展中

  • 像静态分析器这样的工具已经成熟,并且会越来越多

更新:有人让我展示一些代码示例,这当然可以!下面有两个例子:一个是我比较喜欢的项目,是用 PHP 和 Laravel 语言编写的;还有一个是我们办公室维护的几百个 OSS 包的列表。代码地址如下:

  • https://github.com/brendt/aggregate.stitcher.io

  • https://spatie.be/opensource/packages

那我们开始吧。

历史背景

首先,我们快速回顾一下 PHP 的发布周期。现在的 PHP 版本是 7.3,预计 2019 年底将发布 7.4,然后下个版本将是 PHP 8.0。

自 5.* 时代之后,其核心团队努力保持着一年一版本的发布周期,并在过去四年中成功做到了这一点。

一般来说,每一个新版本都有两年的有效支持期,然后再用一年来做「安全修复」。这么做的目的是鼓励 PHP 开发人员尽可能使用最新版本,因为每年的小升级比从 5.4 跳到 7.0 版本要容易得多。

PHP 的版本时间表如下:

其中,PHP 5.6 是 5.*时代的最新版本,它的下一个版本就是 7.0。如果您想知道 PHP 6 发生了什么,可以收听 PHP 圆桌播客 :

https://www.phproundtable.com/episode/what-happened-to-php-6

了解这些之后,我们可以进一步探讨关于 PHP 的常见误解了。

PHP 性能

5.* 时代的 PHP 性能充其量也不过是平均水平,但是在 7.0 中,PHP 核心的大部分内容都被完全重写,性能也因此提高了两到三倍。

光说不练假把式,我们用基准测试结果说话。有人对 PHP 的性能进行过基准测试,这些测试被很好地记录在了 Kinsta 上:

https://kinsta.com/blog/php-benchmarks/

自从 7.0 出现以后,PHP 的性能一直处于上升期。PHP web 应用的性能与其他语言的 web 框架相当 (在某些情况下甚至更好)。不信可以看看这个通用基准测试包:

https://github.com/thebenchmarker/webframeworks

PHP 框架虽然没办法做到比 C 和 Rust 更好,但是它比 Rails 或 Django 要好得多,并且可以与 ExpressJS 相媲美。

框架和生态系统

说到框架,PHP 已经不再只是 WordPress 了。作为一名专业的 PHP 开发人员,我想说的是:WordPress 根本不能代表现在的生态系统。

一般有两个主要的 web 应用程序框架和一些小框架,比如 Symfony 和 Laravel。当然,还有 Zend、Yii、Cake、Code Igniter 等,但是只有这两种主要的框架才能代表如今的 PHP。

这两个框架都有一个包含大量包和产品的生态系统。从管理面板和 CRM 到独立的软件包、CI、profiler,众多如 web sockets 服务器、队列管理器、支付集成这样的服务...... 可以拿得出手的东西太多了。

不过,这些框架是用于实际开发的。如果你需要纯粹的内容管理,像 WordPress 和 CraftCMS 这样的平台只会越来越好。

测试 PHP 生态系统当前状态的一种方法是查看 Packagist,它是 PHP 的主要 package 存储库。它呈指数级增长,每天大约有 2500 万次的下载量。公平地说,PHP 生态系统已经不再是过去的小输家了。

下面的图表,列出了包和版本的数量随时间的变化。

除了应用程序框架和 CMS,近年来异步框架也逐步兴起。

这些框架和服务器是用 PHP 或其他语言编写的,通过这些框架,用户可以实现真正的异步 PHP。Swoole、Amp 和 ReactPHP 都是很好的例子。

自从我们进入异步世界以来,像 web sockets 和具有大量 IO 的应用程序之类的东西已经与 PHP 世界息息相关。

在内部邮件列表(内核开发人员讨论如何开发该语言的地方)上也有关于将 libuv 添加到内核的讨论。

语言本身

虽然 async 和 await 功能都还不能用,但是在过去几年里,PHP 语言本身已经做了很多改进。下面列出了 PHP 的部分新特性:

  • Short Closures

  • Null coalescing operator

  • Trait

  • Typed properties

  • Spread operator

  • JIT compiler

  • FFI

  • Anonymous classes

  • Return type declarations

  • Contemporary cryptography

  • Generators

除了语言特性,我们也应该看一下语言的发展过程。虽然社区也会提出 RFCs,但一个活跃的核心志愿团队才是推动语言的发展的根本。

这些 RFCs 会在「内部」邮件列表中进行讨论。在添加新的语言特性之前,必须进行投票,获得至少 2/3 支持的 RFC 才能被写入内核。

大概有 100 个人有投票权,虽然他们不必对每个 RFC 都进行投票。这些人中必须包括核心团队的成员,因为他们要维护代码库。剩下的投票者主要是从 PHP 社区中挑选出来的,这些人包括 PHP 文档的维护者、整个 PHP 项目的贡献者以及 PHP 社区中的杰出开发人员。

虽然大多数核心开发都是在自愿的基础上完成的,但是作为核心 PHP 开发人员之一,Nikita Popov 最近已被 JetBrains 聘用,成为了全职的 PHP 开发者。另外,Linux 基金会最近也决定投资 Zend framework。这样的雇佣和收购确保了 PHP 未来发展的稳定性。

工具包

除了程序内核本身,PHP 工具包的数量也在不断增加。静态分析器 Psalm(由 Vimeo 创建)、Phan 和 PHPStan 都是很好的例子。

这些工具可以对 PHP 代码做静态分析,并会报告任何类型的错误、可能的 bug 等。在某种程度上,它们的功能几乎可以赶上 TypeScript 了,不过目前这种语言还无法实现源到源编译,因此不允许使用自定义语法。

尽管这意味着我们需要依赖 docblock,但 PHP 的最初创建者 Rasmus Lerdorf 确实提到了向内核添加静态分析引擎的想法。这个想法潜力巨大,但这是一项艰巨的任务。

为了像 JavaScript 那样实现源到源编译,PHP 开发者们也一直努力在用户端扩展 PHP 语法。一个名为 Pre 的项目就在做这样的事:将新的 PHP 语法转换为普通的 PHP 代码。

虽然 JavaScript 中已经实现了这个想法,但是只有提供合适的 IDE 和静态分析支持,它才能在 PHP 中工作。这个想法很有意思,但它还需要不断成长,才有可能成为「主流」。

结语

说了这么多,你仍然可以吐槽说 PHP 是一种蹩脚的语言。虽然它还是有一些缺点和 20 年的遗留问题,但我仍然热爱这门语言。

以我的经验来看,我能够写出可靠易维护且高质量的软件。我和客户对最终的结果也都是满意的。

虽然使用 PHP 还会有一些乱七八糟的事情,但如果使用得当,我认为它还是一个不错的网络开发选择。

原文链接:
https://stitcher.io/blog/php-in-2019

相关资讯

PHP学习Thinkphp框架(1)——关于Thinkphp结构目录和数据库操作

Thinkphp:=> 简介:是由上海顶想公司开发的一款,PHP写成的,开源的MVC框架;官网:http://www.thinkphp.cn下载:https://github.com/top-think/framework 环境要求:

国产PHP框架ThinkPHP与SpeedPHP的浅析对比

本文主要简析两个国产的PHP框架ThinkPHP与SpeedPHP。通过学习发现,它俩在很多方面有着相似但又不同的地方:1.单一入口,二者都是单一入口文件。每个app都需要一个入口文件,且只能有一个入口文件。ThinkPHP生而就有多app

《PHP》什么是PHP框架,为什么要用PHP框架

PHP框架是什么?PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。这样不但节省开发时间,有助于建立更稳定的应用,而且减少了重复编码的开发。框架还可以帮助初学者建立更稳定的应用服务,这可以让你花更

「PHP发展史」PHP5.2到PHP5.6中新增的功能详解

截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余的一半用户在使用 PHP5.3。因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本

PHP开发者的福音,解读PHP异步通信框架Swoole的机制

在中国互联网行业膨胀的12-16年,PHP语言凭借自身易上手,开发周期短的优势,深受各中小企业的喜爱。小编也很荣幸在2009年底进入这一行业,为自己谋生分得一杯羹。但是PHP又先天有它的局限性,导致客户很多需求无法得到满足。大家都知道,P

ZWebPHP基于API的简易PHP开发框架

ZWebPHP 框架设计目的:标准化、体验统一、简单可靠、易于扩展后端PHP框架基于PHP、smarty 构建。基于composer自动加载。完全基于API接口设计,API文档自动生成。权限包含菜单访问权限和API接口访问权限。工具类、数据

PHP组件及框架推荐系列:PHP世界中最好的日志组件——Monolog

这也许,不,就是PHP世界中最好的日志组件—— Monolog所有的 PHPer,请站在巨人的肩膀上。随着 Composer 的普及,PHP 组件化开发思想越来越深入人心,我们没有必要重新自己打造轮子,只要确定需求和目标,设计好软件的架构,

「php框架教程」给PHP初学的你10个最常用的函数

PHP的功能越来越强大,里面有着非常丰富的内置函数。资深的PHP程序员对它们可能都很熟悉,但很多的PHP学习者,仍然对一些非常有用的函数不太熟悉。这篇文章里,我们就列举10个你或许不了解但实用的PHP函数,供大家参考和学习。1. php_c

纯PHP开发的高性能PHPsocket服务器框架

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持W

PHP框架开发-如何拥有自己的PHP框架

框架是帮助初学者创建稳定的程序。使得你可以花更多的时间去创造真正的Web程序,而不是编写重复性的代码。框架第一阶段什么是框架?一直以来php框架被广泛利用,多半都是基本mvc架构模式的,国内外框架有HDPHP框架、ThinkPHP、CI框架

可持续更新的PHP框架---是时候有自己的PHP框架了

怎样搭建自己一个PHP框架?PHP写了5年,不想用其他框架,想自己搭建一套mvc oop的框架 可以用别人一些类库,但核心orm 之类希望自己写。这是最近遇到了别人的一个问题,5年时间的PHP资深程序是可以独立开发出自己框架。小编今天带来H

PHP应用中比较好的php框架

PHP的框架很多,有phalcon,kohana ,laravel,Yii,thinkPHP,ROR,HD,,CI,和ROR等,我觉得PHP框架其实本身就是一个工具而已,没有好与不好,只有合不合适。任何东西都没有最好,只是不同的取舍。有人说

PHP框架之ThinkPHP框架

ThinkPHP框架人们习惯性又叫它TP框架,是一个轻量级的国产PHP开发框架,快速、兼容而且简单, ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、

PHP框架的发展背景以及主流PHP框架横向对比

PHP框架的发展背景毫无疑问,Web框架技术在近几年已经得到了突飞猛进的发展和普及,在过去几年里,框架技术的普遍经历了比较大的完善过程,很大一部分可以归因于RubyonRails,以及在其他编程语言中流露出的MVC框架思想。如果你是一个PH

“PHP是最好的编程语言”这19款PHPWeb框架要知道

PHP是主要用于Web开发的服务器端的脚本语言,也用作通用编程语言。Web框架(WF)或Web应用程序框架(WAF)是一个软件框架,来支持Web应用程序的开发,包括Web服务,Web资源和Web API。Web框架能够自动化Web开发中执行

友情链接

网址导航 SEO域名抢注宝宝起名网妈妈知道币圈围棋培训网陀螺山旅游网东芝冰箱评测网自行车之家绍兴新闻头条网猫屎咖啡品鉴网餐饮点餐系统网伯爵腕表之家百达翡丽收藏家电脑组装教程网福建土楼资讯网舞蹈培训官网数字能量研究中心山东旅游网垃圾分类网
上饶新闻资讯网以新闻为主的网上信息发布平台,是上饶最具影响力的新闻网站。上饶新闻最新消息、上饶今日头条新闻、上饶市信州区新闻头条、广信区新闻最新、在传统媒体和新媒体的深度融合中,构建多元化传播新平台,提升影响力和竞争力。
上饶新闻资讯网 keaier.cn ©2022-2028版权所有