🧩 第四章 面向对象编程技术:去除冗余、进行整理
📄 一句话概括

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 秒实验

  1. 查一查你熟悉的某个框架最早的一版长什么样,看它是不是也从【够用就好】起步的。
  2. 想一想:你手上有哪个脚本,正在变成一套系统。

常见误区

  1. 以为 PHP 一直是【不入流】的语言。它按自己的问题一步步长成了现在的样子。
  2. 以为语言进化是设计者拍脑袋。每一次都是被规模逼的。
自测三问(点开对答案) 1. PHP 最早是什么? —— 1995 年的网页模板工具:脚本直接嵌在 HTML 里,没有类、没有命名空间。 2. 它的四个阶段各是什么? —— 1995 脚本片段(无 OOP)→ PHP 4(很弱)→ PHP 5(完整类模型)→ PHP 7/8(类型声明、严格模式)。 3. 它为什么非得进化? —— 要处理的系统变大了:从几个页面变成一整套业务系统,脚本式写法撑不住——规模逼出结构。

相关笔记