📄 一句话概括
PHP 本来不是编程语言,是网页模板工具——从一段脚本到有类型、有可见性的类,走了二十多年。
📝 本节和前面几节的关系
4.19 收完本章,这个专栏用 PHP 把 3.1 那条规律再演一遍。
一、它的出身
1995 年的 PHP 不是给人写程序的,是给网页填动态内容的。 一段脚本直接嵌在 HTML 里,没有类、没有命名空间、没有包管理。 这跟 3.2 的手写机器码有点像:先把事办了,抽象以后再说。
二、四个阶段
1995 起步:嵌在 HTML 里的脚本片段,OOP 没有。 PHP 4:有了函数和简单对象,OOP 很弱。 PHP 5:完整的类模型——抽象类、接口、可见性、异常,OOP 有了。 PHP 7/8:类型声明、严格模式、JIT,接近现代语言。
三、一个能数出来的对比
早期的类只有属性,没有可见性——所有字段都是公开的,谁都能改。
现在是 private string $name;——类型有了,可见性也有了。
从【一段脚本】到【一个有类型、有可见性的类】,走了二十多年。
注意这不是 PHP 落后:它每一步都是在解决自己那个年代的真实问题。
四、规律的重演
为什么它非得进化?因为它要处理的系统变大了。 网站从【几个页面】变成【一整套业务系统】,脚本式的写法撑不住了。 这正是 3.1 那条规律在另一种语言上的重演:规模逼出结构。 所以读语言史的正确姿势,不是记年份,是看每一步在替谁收拾麻烦。
五、动手 Demo:从网页工具进化而来的PHP
把 PHP 的四个阶段排一排,看 OOP 是第几步才进去的。 再对比 1995 年的一段脚本和现在的一个类。
rows = [
("1995 起步", "嵌在 HTML 里的脚本片段", "没有"),
("PHP 4", "有了函数和简单对象", "很弱"),
("PHP 5", "完整的类模型", "有了"),
("PHP 7/8", "类型声明、严格模式", "接近现代语言"),
]
for stage, what, oop in rows:
print(stage, "|", what, "|OOP:", oop)
实跑输出:
--------------------------------------------------------------------
从网页工具进化而来的PHP
--------------------------------------------------------------------
专栏【当今的OOP】讲 PHP 的进化:**它本来不是编程语言,是网页模板工具。**
阶段 它是什么 OOP 在哪
------------------------------------------------------
1995 起步 嵌在 HTML 里的脚本片段 没有
PHP 4 有了函数和简单对象 很弱
PHP 5 完整的类模型 有了
PHP 7/8 类型声明、严格模式 接近现代语言
实测一个可以数的对比:**早期 PHP 的类只有属性,没有可见性。**
1995 年:
<?php echo "Hello"; ?> ← 一段 HTML 里的脚本
现在:
class User {
private string $name;
public function __construct(string $n) { ... }
}
**从【一段脚本】到【一个有类型、有可见性的类】,走了二十多年。**
**为什么它非得进化?因为它要处理的系统变大了——**
**这正是 3.1 那条规律在另一种语言上的重演。**
实测四个阶段:OOP 从【没有】到【很弱】到【有了】到【接近现代语言】。 它非得进化,是因为要处理的系统变大了——这正是 3.1 那条规律在另一种语言上的重演。
30 秒实验
- 查一查你熟悉的某个框架最早的一版长什么样,看它是不是也从【够用就好】起步的。
- 想一想:你手上有哪个脚本,正在变成一套系统。
常见误区
- 以为 PHP 一直是【不入流】的语言。它按自己的问题一步步长成了现在的样子。
- 以为语言进化是设计者拍脑袋。每一次都是被规模逼的。
自测三问(点开对答案)
1. PHP 最早是什么? —— 1995 年的网页模板工具:脚本直接嵌在 HTML 里,没有类、没有命名空间。 2. 它的四个阶段各是什么? —— 1995 脚本片段(无 OOP)→ PHP 4(很弱)→ PHP 5(完整类模型)→ PHP 7/8(类型声明、严格模式)。 3. 它为什么非得进化? —— 要处理的系统变大了:从几个页面变成一整套业务系统,脚本式写法撑不住——规模逼出结构。- ☐ 下一章(第五章 理解内存结构:程序员的基本素养)
相关笔记
- 决心决定OOP的生死 — 正文收束
- OOP的出现具有必然性 — 被规模逼出来的规律
- 最初使用机器语言编写程序 — 另一种【先办事再说】
- 🧩 面向对象是怎样工作的 · 索引