PHP 的怪异之处2026 年 5 月 19 日过去 5 年作者在工作中一直使用 PHP 进行编码所在组织的整个后端都是 2007 年公司刚成立时用 PHP 编写的。尽管 PHP 是成熟且常用的语言但业内口碑不好大多是因人们对其能力了解过时。作者已不在那家公司工作反思使用 PHP 的经历发现有些地方很奇怪下面解释两个最突出的问题数组很奇怪且功能过载、类型系统很笨重。数组并非真正的数组PHP 标准库基本只有 array 这一种数据结构技术上是 _有序键值字典_而非传统意义上的数组。灵活性带来复杂性若想创建固定大小的对象集合实际上做不到。修改数组会出现问题因为它是键值存储。使用内置函数进行数组操作键的顺序可能不一致。让数组恢复自然索引状态需用 array_values() 函数否则会出现难察觉的 bug。作者认为 PHP 不支持简单的对象集合很奇怪处理任意数字键很烦人。类属性类型令人困惑PHP5 引入原生类型系统到 PHP7 可定义类属性类型。但类型系统有怪癖建立在动态类型语言之上类属性可能出现隐藏的未初始化状态。实例化 Book 对象后未声明类型的属性有值为 NULL另外两个属性没值。对未初始化的属性进行空值检查会出现致命错误。宽松的属性定义行为让编写代码更困难类属性类型系统对理解对象组成帮助不大引入了新的未初始化状态。作者认为未初始化不该成为一种状态可空类型属性应默认设为 null非可空类型应定义为构造函数提升参数或声明时有默认值。结论尽管作者对 PHP 诸多批评但仍认为它遭受的诋毁不公正。和任何语言一样它有怪癖和权衡但仍能用 PHP 完成其他语言能完成的任务。作者喜欢 PHP 的一些方面它是脚本语言开发阻力小[Laravel](https://laravel.com/) 是强大的 Web 框架所有的 $ 符号会提醒赚钱目的。