一:为什么学 PHP——统治 Web 开发 30 年的语言

一、你已经在 Web 开发这条路上走了很远

如果你已经跟完了《前端圭臬》《后端零基础入门》《Python 零基础入门》《C/C++ 零基础入门》这四个系列,你现在手里至少有三把刷子:

  • 前端:HTML、CSS、JavaScript 写页面,操作 DOM,处理用户交互。
  • Node.js 后端:Express 框架、MySQL 数据库、JWT 认证、RESTful API。
  • Python:爬虫、数据分析、自动化脚本、Flask 后端。
  • C 语言:指针、内存管理、文件操作、底层思维。

现在学 PHP,不是从零开始学编程,而是用你已经掌握的编程思维,去掌握一门专门为 Web 开发设计的语言。你会发现在 PHP 中做 Web 开发,很多事情比 Node.js 和 Python 更直接——因为 PHP 从诞生第一天起,就只做一件事:处理 HTTP 请求并返回 HTML 页面

二、PHP 是什么

PHP 的全称是 PHP: Hypertext Preprocessor(超文本预处理器)。这个缩写本身就是一个递归缩写——PHP 中的 P 又代表 PHP,这是程序员式的幽默。

PHP 是一门解释型、动态类型、专门为 Web 开发设计的服务器端脚本语言。它诞生于 1994 年,比 JavaScript 还早一年,比 Python 晚三年。和 JavaScript/Python 一样,变量不需要声明类型,代码不需要编译,写完就能跑。

PHP 最大的特点,是它可以直接嵌入到 HTML 中

<!DOCTYPE html>
<html>
<head>
    <title>我的第一个 PHP 页面</title>
</head>
<body>
    <h1>欢迎来到我的网站</h1>
    <p>今天的日期是:<?php echo date('Y年m月d日'); ?></p>
</body>
</html>

看到 <?php ... ?> 这个标记了吗?这就是 PHP 代码的”开关”。在这个标记之内的代码会被 PHP 引擎执行,之外的内容原样输出。这和 JavaScript 完全不同——JS 需要通过 DOM 操作来修改页面内容,PHP 直接在 HTML 生成时就把动态内容插入进去了。

这种”嵌入式”的设计,让 PHP 在 Web 开发中有着无与伦比的便利性。不需要模板引擎、不需要前端框架,一个 .php 文件就能同时包含 HTML 结构和服务器端逻辑。

三、PHP 和 JavaScript/Python 的核心区别

3.1 运行方式:服务器端渲染 vs 客户端渲染

PHP 是纯粹的服务器端语言,代码在服务器上执行,执行完毕后生成 HTML 发送给浏览器。浏览器收到的已经是处理好的 HTML,看不到任何 PHP 代码。

而你在前面学的 JavaScript,既可以在浏览器里跑(操作 DOM),也可以在服务器上跑(Node.js)。Python 也是通用的,能做 Web 后端(Flask/Django),也能做爬虫、数据分析、自动化。

PHP 的专注恰恰是它的优势——在 Web 开发领域,PHP 的便捷性是其他语言难以比拟的

3.2 部署方式:简单到”令人发指”

Node.js 部署需要:安装 Node.js → 安装依赖 → 配置反向代理(Nginx)→ 用 PM2 管理进程。

Python 部署需要:创建虚拟环境 → 安装依赖 → 配置 WSGI 服务器(Gunicorn/uWSGI)→ 配置反向代理。

PHP 部署只需要:把 .php 文件放到 Apache 或 Nginx 的网站目录下。访问这个文件,它就跑起来了。没有进程管理、不需要手动启动服务、修改代码后刷新页面立即生效。

这种极简的部署方式,是 PHP 在共享主机时代称霸 Web 开发的重要原因。今天全球仍然有超过 75% 的网站使用 PHP(包括 WordPress、Facebook 早期版本、维基百科)。

3.3 语法风格:C 语言的直系后代

如果你刚学完 C 语言,你会发现 PHP 的语法非常亲切:

特性 C PHP JavaScript Python
变量声明 int x = 10; $x = 10; let x = 10; x = 10
语句结尾 必须分号 必须分号 分号可选 不需要
代码块 { } { } { } 缩进
数组语法 int arr[5]; $arr = [1, 2, 3]; let arr = [1, 2, 3]; arr = [1, 2, 3]
函数定义 int add(int a, int b) function add($a, $b) function add(a, b) def add(a, b):

PHP 从 C 语言继承了很多语法习惯——分号结尾、花括号代码块、function 关键字、for/while/if 的写法——几乎一模一样。如果你刚学完 C,看到 PHP 的代码会有一种”回家了”的感觉。

但 PHP 比 C 方便得多:没有指针(底层有,但开发者不需要操作)、字符串是内置类型、数组可以动态扩容、内存自动管理。它取 C 语言语法之长,避 C 语言底层之短。

3.4 类型系统:动态但灵活

PHP 是动态类型语言,变量不需要声明类型:

$x = 10;        // 整数
$x = "hello";   // 现在变成字符串了——和 JS/Python 一样灵活

PHP 还支持类型转换类型声明(较新版本):

// 类型转换(和 C 语言一样的写法)
$result = (int)"42";  // 字符串 "42" 转成整数 42

// 现代 PHP 支持类型声明(可选)
function add(int $a, int $b): int {
    return $a + $b;
}

四、PHP 能做什么

PHP 的应用场景非常集中——一切和 Web 后端相关的需求

  • 动态网站:WordPress(全球 43% 的网站用它搭建)就是用 PHP 写的。你可以在 WordPress 里直接写 PHP 代码来定制功能。
  • Web 应用后端:用户注册登录、表单提交处理、内容管理系统(CMS)、电商网站。
  • API 服务:用 PHP 提供 RESTful API,前端(不管是用什么技术栈)通过 HTTP 请求调用。
  • 命令行脚本:PHP 也可以脱离浏览器在终端里运行,用来写数据处理脚本、定时任务。

如果你已经会 Node.js 和 Python 写后端,再学 PHP 的意义在于:多了一门专门为 Web 优化的后端语言,而且部署极简。你可以在十分钟内把一个 PHP 网站部署到任何支持 PHP 的廉价虚拟主机上——这种效率是 Node.js 和 Python 做不到的。

五、安装 PHP 开发环境

PHP 需要一个Web 服务器(通常是 Apache 或 Nginx)来运行。但安装 Apache + PHP + MySQL 一套环境有些复杂。对于学习来说,最简单的方式是使用PHP 内置的开发服务器——它从 PHP 5.4 开始就自带了。

5.1 安装 PHP

Windows:

  1. 打开浏览器,访问 https://windows.php.net/download/
  2. 下载最新的 Thread Safe 版本的 ZIP 包。
  3. 解压到一个文件夹,比如 C:\php
  4. 把这个文件夹添加到系统环境变量 PATH 中:右键”此电脑” → 属性 → 高级系统设置 → 环境变量 → Path → 编辑 → 新建 → 填入 C:\php

Mac:

Mac 自带 PHP,但版本可能较旧。推荐用 Homebrew 安装新版:

brew install php

Linux(Ubuntu/Debian):

sudo apt update
sudo apt install php php-cli

5.2 验证安装

打开终端,输入:

php -v

如果出现类似 PHP 8.3.0 的版本号,说明安装成功。

5.3 启动 PHP 内置开发服务器

在终端中进入你的项目文件夹,执行:

php -S localhost:8080

这行命令启动了一个 PHP 内置的 Web 服务器,监听在 8080 端口。现在打开浏览器,访问 http://localhost:8080,服务器会尝试返回当前文件夹下的 index.php 文件(如果存在的话)。

这个内置服务器是学习阶段的利器。不需要安装 Apache 或 Nginx,不需要配置虚拟主机,一条命令就搞定。不过它只适用于开发学习,生产环境需要用 Apache 或 Nginx。

六、你的第一个 PHP 程序

现在我们来写第一个 PHP 程序。在项目文件夹中创建 index.php

<?php
// 这是你的第一个 PHP 程序

// 1. 输出一段文字
echo "你好,欢迎来到 PHP 的世界!";

// 2. 变量
$name = "张三";
$age = 28;
echo "我叫{$name},今年{$age}岁。";

// 3. 数组
$fruits = ["苹果", "香蕉", "橘子"];
echo "我喜欢的水果有:" . implode("、", $fruits);

// 4. 条件判断
$score = 85;
if ($score >= 90) {
    echo "等级:优秀";
} elseif ($score >= 80) {
    echo "等级:良好";
} elseif ($score >= 60) {
    echo "等级:及格";
} else {
    echo "等级:不及格";
}

// 5. 循环
echo "1 到 5 的循环:";
for ($i = 1; $i <= 5; $i++) {
    echo $i . " ";
}
?>

保存文件。确保终端中已经启动了 PHP 内置服务器(php -S localhost:8080),然后在浏览器中访问 http://localhost:8080

你会看到类似这样的输出:

你好,欢迎来到 PHP 的世界!我叫张三,今年28岁。我喜欢的水果有:苹果、香蕉、橘子。等级:良好。1 到 5 的循环:1 2 3 4 5

恭喜!你已经写出了第一个 PHP 程序。

七、逐行解释这段代码

现在我们来逐行理解这段代码。如果你之前学过 C 语言,你会发现很多语法一模一样。

<?php ... ?>

这是 PHP 代码的起止标记。所有 PHP 代码必须写在 <?php?> 之间。在这之外的任何内容(HTML、纯文本)都会被原样输出给浏览器。

如果一个文件全部是 PHP 代码(没有嵌入 HTML),惯例是只写开始标记 <?php,不写结束标记 ?>。这可以防止文件末尾多余的空白字符被意外输出。

注释

// 这是单行注释
# 这也是单行注释(和 Shell 风格一样)
/* 这是多行注释
   可以跨越多行 */

PHP 支持三种注释风格://# 都是单行注释,/* */ 是多行注释。这和 C 语言、JavaScript 完全一样。

echo:输出内容

echo "你好,欢迎来到 PHP 的世界!";

echo 是 PHP 中最常用的输出语句。它把后面的内容输出到浏览器。和 C 语言的 printf、Python 的 print()、JavaScript 的 console.log() 功能相同。

注意末尾的分号:PHP 中每条语句必须以分号结尾。这和 C 语言一样,和 JavaScript(分号可选)、Python(不需要分号)不同。

还有一个 print 语句,功能和 echo 几乎相同,但 echo 更常用。

变量:以 $ 开头

$name = "张三";
$age = 28;

PHP 中所有变量都以 $ 符号开头。这是 PHP 和 C/JS/Python 在视觉上最明显的区别。$name 读作”变量 name”。$ 符号是 PHP 变量名的固定前缀。

变量不需要声明类型,和 JS/Python 一样是动态类型。命名规则:$ 后面跟字母或下划线,不能以数字开头。推荐用驼峰命名法:$userName$studentScore

字符串中的变量插值

echo "我叫{$name},今年{$age}岁。";

PHP 的双引号字符串支持变量插值——直接在字符串中嵌入变量名,变量值会被替换进去。{$name} 会被替换成 张三

这和 JavaScript 的模板字符串(`我叫${name}`)、Python 的 f-string(f"我叫{name}")功能相同。

如果只用单引号包裹字符串,变量不会被替换:

echo '我叫{$name}';  // 输出:我叫{$name}(字面量,不替换)

字符串拼接:用点号

echo "我喜欢的水果有:" . implode("、", $fruits);

PHP 用点号 . 来拼接字符串,而不是 +(JS/Python 用 +)。+ 在 PHP 中只做数学加法。

echo "Hello " . "World";  // Hello World
echo "5" + "3";           // 8(数字加法,自动类型转换)

数组

$fruits = ["苹果", "香蕉", "橘子"];

PHP 的数组用方括号 [] 包裹,和 JS/Python 一样。implode("、", $fruits) 把数组元素用顿号连接成一个字符串,相当于 JS 的 arr.join("、") 或 Python 的 "、".join(arr)

条件判断

if ($score >= 90) {
    echo "等级:优秀";
} elseif ($score >= 80) {
    echo "等级:良好";
} else {
    echo "等级:不及格";
}

和 C 语言、JavaScript 几乎完全一样——条件用括号包裹,代码块用花括号。唯一的区别是 else if 在 PHP 中既可以写 else if(和 C/JS 一样),也可以写 elseif(连在一起,PHP 特有的写法)。

循环

for ($i = 1; $i <= 5; $i++) {
    echo $i . " ";
}

和 C 语言、JavaScript 的 for 循环完全一样——三要素(初始化、条件、更新)用分号分隔。唯一的区别是循环变量也要加 $ 前缀。

八、PHP 和 HTML 的混合编写

这是 PHP 最独特的特性——在一个文件中混合写 HTML 和 PHP:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>PHP + HTML 混合演示</title>
    <style>
        body { font-family: sans-serif; padding: 40px; }
        .card { background: #f0f4f8; padding: 20px; border-radius: 10px; margin: 10px 0; }
    </style>
</head>
<body>
    <h1>用户列表</h1>

    <?php
    $users = [
        ["name" => "张三", "age" => 28, "city" => "上海"],
        ["name" => "李四", "age" => 22, "city" => "北京"],
        ["name" => "王五", "age" => 25, "city" => "广州"],
    ];

    foreach ($users as $user) {
    ?>
        <!-- HTML 部分:用 PHP 变量填充内容 -->
        <div class="card">
            <h3><?php echo $user["name"]; ?></h3>
            <p>年龄:<?php echo $user["age"]; ?> 岁</p>
            <p>城市:<?php echo $user["city"]; ?></p>
        </div>
    <?php
    }
    ?>

</body>
</html>

代码解析:

  • <?php foreach ... { ?><?php } ?> 之间,是HTML 代码
  • 这个 HTML 代码会被 PHP 循环执行——每个用户生成一个 .card 的 div。
  • 在 HTML 中使用 <?php echo $user["name"]; ?> 来动态输出 PHP 变量的值。
  • 这和你在 Node.js 中用模板引擎(EJS/Pug)或者前端框架(React/Vue)做的事情完全一样——把数据渲染成 HTML。不同的是,PHP 不需要额外的模板引擎,它本身就是模板引擎。

这种”嵌入 HTML”的方式在大型项目中已经不推荐了(现在更流行前后端分离),但在学习阶段,它能让你直观地看到”后端怎么生成前端页面”。

九、PHP 内置服务器和文件组织

PHP 内置开发服务器会从当前文件夹自动寻找以下文件作为首页:

  • index.php
  • index.html

当你访问 http://localhost:8080 时,服务器会自动返回 index.php 的执行结果。如果要访问其他文件,需要在 URL 中指定文件名:

http://localhost:8080/about.php
http://localhost:8080/contact.php

要停止服务器,在终端中按 Ctrl + C

十、本篇动手练习

练习 1:安装环境并运行第一个程序

按本文第五节的指引,安装 PHP 并验证版本。用内置服务器启动项目,把第六节的代码保存为 index.php,在浏览器中访问。

练习 2:修改输出内容

修改 index.php,把变量 $name 改成你自己的名字,$fruits 改成你喜欢的三种水果。刷新浏览器观察变化。

练习 3:写一个个人信息页面

新建 about.php,用 PHP + HTML 混合编写,输出你的个人信息:姓名、年龄、职业、所在地、兴趣爱好列表。用 PHP 变量存储所有数据,用 HTML 渲染结构,用 CSS 做简单美化。

练习 4:制造并修复错误

故意在 PHP 代码中做以下修改,观察报错信息:

  • 删掉一个分号。
  • 变量忘了写 $ 符号(写成 name 而不是 $name)。
  • echo 写成不存在的单词。

学会阅读 PHP 的报错信息。PHP 会告诉你哪个文件、第几行出了什么错。这是调试的基本功。

十一、本篇小结

这一篇你正式进入了 PHP 的世界:

  • PHP 是什么:一门专门为 Web 开发设计的服务器端脚本语言。可以直接嵌入 HTML,部署极简。
  • PHP 和你学过的语言的关系:语法从 C 语言继承(分号、花括号、for/while/if),变量以 $ 开头,字符串用点号拼接。动态类型,和 JS/Python 一样灵活。
  • 安装 PHP:从官网下载安装,用 php -v 验证,用 php -S localhost:8080 启动内置开发服务器。
  • 第一个 PHP 程序<?php ... ?> 包裹代码,echo 输出内容,$变量名 声明变量,双引号支持变量插值。
  • PHP + HTML 混合编写foreach 循环中嵌入 HTML,用 <?php echo $var; ?> 输出动态数据。

PHP 是一门让 Web 开发”回到简单”的语言。下一篇,我们正式进入 PHP 语法基础——变量、数据类型、运算符、输入输出。你会看到 PHP 的数组比任何语言都强大,它的关联数组就是字典,索引数组就是列表,两者还可以混用。

下一篇预告

下一篇——《PHP 语法基础:变量、数据类型、输出》:详细讲解 PHP 的变量命名规则、所有基本数据类型(字符串、整数、浮点数、布尔值、NULL)、echo 和 print 的区别、字符串拼接和插值、类型转换、以及 PHP 特有的可变变量。

PHP 零基础入门,每周更新。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容