PHP(以 PHP 8.x 最新主流版本为例)基础语法速览
PHP 本质上是一门:
- 动态类型语言
- 解释执行
- 强 Web 开发基因
- 可嵌入 HTML
- 面向对象 + 函数式混合风格
现在的 PHP 8.x 和早期 PHP 已经差别很大了:
- 有类型系统
- 有属性注解
- 有 match
- 有 enum
- 有 JIT
- 有现代 OOP
1. Hello World
php
<?php
echo "Hello World";
PHP 文件通常以:
php
<?php
开头。
2. 变量赋值
PHP 变量必须以 $ 开头。
php
$name = "Tom";
$age = 18;
$price = 99.5;
$isVip = true;
3. 数据类型
PHP 是动态类型语言。
php
$a = 10; // int
$b = 3.14; // float
$c = "hello"; // string
$d = true; // bool
$e = null; // null
查看类型:
php
var_dump($a);
输出:
php
int(10)
4. 算数运算
php
$a = 10;
$b = 3;
echo $a + $b; // 13
echo $a - $b; // 7
echo $a * $b; // 30
echo $a / $b; // 3.3333
echo $a % $b; // 1
5. 逻辑运算
php
$a = true;
$b = false;
var_dump($a && $b); // 与
var_dump($a || $b); // 或
var_dump(!$a); // 非
比较运算:
php
$a == $b // 值相等
$a === $b // 值和类型都相等(推荐)
$a != $b
$a > $b
$a < $b
6. 字符串
拼接
PHP 用 . 拼接字符串:
php
$name = "Tom";
echo "Hello " . $name;
双引号变量解析
php
echo "Hello $name";
7. 数组(PHP 最核心的数据结构🔥)
PHP 的数组非常特殊:
它同时兼具:
- 列表(List)
- Map(字典)
- HashMap
- Ordered Map
本质:
PHP Array = 有序 HashMap
8. 列表(List)
php
$nums = [1, 2, 3];
echo $nums[0];
添加元素:
php
$nums[] = 4;
遍历:
php
foreach ($nums as $v) {
echo $v;
}
9. Map(关联数组)
PHP 没有单独的 Map 类型。
直接用数组实现。
php
$user = [
"name" => "Tom",
"age" => 18
];
echo $user["name"];
添加:
php
$user["city"] = "Tokyo";
10."集合"Set
PHP 没有原生 Set。
通常:
方法1:数组模拟
php
$set = [];
$set["apple"] = true;
$set["banana"] = true;
方法2:SplObjectStorage
较少用。
方法3:Laravel Collection(实际开发常用)
现代 PHP 更常使用框架集合。
11. if 判断
php
$age = 20;
if ($age >= 18) {
echo "成年人";
} else {
echo "未成年";
}
12. match(PHP 8 新特性🔥)
类似 Java switch,但更安全。
php
$code = 200;
$msg = match($code) {
200 => "成功",
404 => "不存在",
default => "未知"
};
echo $msg;
特点:
- 不会自动穿透
- 返回值
- 更现代
13. for 循环
php
for ($i = 0; $i < 5; $i++) {
echo $i;
}
14. while 循环
php
$i = 0;
while ($i < 5) {
echo $i;
$i++;
}
15. foreach(PHP 高频🔥)
PHP 最常用遍历。
遍历列表
php
$arr = [1,2,3];
foreach ($arr as $v) {
echo $v;
}
遍历 Map
php
$user = [
"name" => "Tom",
"age" => 18
];
foreach ($user as $k => $v) {
echo $k . ":" . $v;
}
16. 函数
基本函数
php
function add($a, $b) {
return $a + $b;
}
echo add(1, 2);
17. 类型声明(现代 PHP)
PHP 8 强烈推荐写类型。
php
function add(int $a, int $b): int {
return $a + $b;
}
含义:
参数是 int
返回值也是 int
18. 默认参数
php
function hello($name = "Guest") {
echo $name;
}
19. 匿名函数
php
$add = function($a, $b) {
return $a + $b;
};
echo $add(1,2);
20. 箭头函数(PHP 7.4+)
php
$add = fn($a, $b) => $a + $b;
21. 类(OOP)
基本类
php
class User {
public string $name;
public function hello() {
echo "hello";
}
}
22. 创建对象
php
$user = new User();
$user->name = "Tom";
echo $user->name;
PHP 对象访问使用:
php
->
不是 .
23. 构造函数
php
class User {
public function __construct(
public string $name,
public int $age
) {}
}
$user = new User("Tom", 18);
这是 PHP 8 的:
构造函数属性提升
非常现代。
24. 继承
php
class Animal {
public function eat() {
echo "eat";
}
}
class Dog extends Animal {
}
25. 接口
php
interface Flyable {
public function fly();
}
实现:
php
class Bird implements Flyable {
public function fly() {
echo "flying";
}
}
26. Trait(PHP 特色🔥)
PHP 有非常特殊的:
Trait(特征)
用于"代码混入"。
类似:
- Go 组合
- Rust trait(但不完全一样)
- mixin
示例:
php
trait Logger {
public function log($msg) {
echo $msg;
}
}
class User {
use Logger;
}
27. null 合并运算符
php
$name = $input ?? "默认值";
等价于:
php
if ($input != null)
非常常用。
28. 命名空间
php
namespace App\Service;
导入:
php
use App\User;
29. Composer(PHP生态核心🔥)
现代 PHP 核心不是语言。
而是:
Composer
相当于:
| 语言 | 包管理 |
|---|---|
| Java | Maven |
| Python | pip |
| Node.js | npm |
| PHP | Composer |
安装:
bash
composer require monolog/monolog
30. PHP 最特殊的地方(重点🔥)
一、PHP Array 是"超级数组"
这是 PHP 最特殊设计。
php
$arr = [];
既能:
- 当 List
- 当 Map
- 当 HashMap
- 当 OrderedMap
这是很多 PHP 灵活性的来源。
但也是性能问题来源。
二、PHP 是"请求级生命周期"
这是和 Java/Go 最大区别之一。
传统 PHP-FPM 模式:
请求来
→ 启动 PHP
→ 执行代码
→ 输出结果
→ 销毁所有内存
所以:
- 不太需要担心内存泄漏
- 全局变量污染小
- 状态天然隔离
但:
- 不适合长连接
- 不适合常驻内存
三、PHP 可以直接嵌入 HTML
这是 PHP 成功核心。
php
<h1>
<?php echo $title; ?>
</h1>
早期 Web 开发革命性。
四、弱类型 + 强类型混合
PHP 现在是:
渐进式强类型
你可以:
完全弱类型
php
$a = "123" + 1;
也可以:
严格类型
php
declare(strict_types=1);
五、Trait 是 PHP 非常特色的语法
很多语言没有。
Trait 解决:
单继承代码复用问题
Laravel 大量使用。
六、现代 PHP 已经不是"玩具语言"
现在的:
- Laravel
- Symfony
- Hyperf
- Swoole
已经非常现代化。
甚至支持:
- 协程
- 常驻内存
- 微服务
- WebSocket
- 高并发
七、PHP 与 Go 的最大区别
| 对比 | PHP | Go |
|---|---|---|
| 类型 | 动态类型 | 静态类型 |
| 编译 | 解释执行 | 编译型 |
| 并发 | 弱(传统) | 极强 |
| Web | 超强 | 强 |
| 部署 | 简单 | 更简单 |
| 性能 | 中等 | 很强 |
| 学习成本 | 低 | 中 |
| 生命周期 | 请求级 | 常驻进程 |
| 协程 | 后加 | 原生 goroutine |
八、现代 PHP 技术栈(2026 主流)
现在主流:
Nginx
+ PHP-FPM
+ Laravel
+ MySQL/PostgreSQL
+ Redis
或者:
Swoole/Hyperf
+ 协程
+ 微服务
九、学习建议(Java程序员视角)
你本身有 Java 基础。
建议重点关注:
第一阶段
- 变量
- 数组
- foreach
- 函数
- 类
第二阶段
- Composer
- PSR规范
- MVC
- Laravel
第三阶段
- Swoole
- Hyperf
- 协程
- 长连接
- 微服务
十、一句话理解 PHP
PHP 可以理解成:
"为 Web 而生的脚本语言"
而现代 PHP:
"拥有脚本开发效率的现代后端语言"