PHP 语法(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言

PHP(Hypertext Preprocessor)是一种广泛应用于 Web 开发的脚本语言,因其灵活性和易学性,成为入门级开发者首选的后端技术之一。掌握 PHP 语法是构建动态网站、开发 API 或处理数据逻辑的核心能力。本文将从基础语法到高级特性展开讲解,通过实际案例帮助读者理解如何高效运用 PHP 完成开发任务。


变量与数据类型:程序的“存储容器”

在 PHP 中,变量是存储数据的容器。其命名规则以 $ 符号开头,后接字母、数字或下划线(如 $name$user_123)。PHP 是弱类型语言,变量类型由赋值内容自动判定,无需显式声明。

变量的声明与赋值

// 声明变量并赋值  
$name = "Alice";  
$age = 25;  
$is_student = true;  

数据类型的分类

PHP 支持多种数据类型,包括标量类型(如字符串、整型、浮点型、布尔型)、复合类型(如数组、对象)和特殊类型(如资源、NULL)。
| 类型 | 描述 | 示例值 |
|------------|--------------------------|----------------------|
| string | 字符序列 | "Hello PHP" |
| integer | 整数 | 42, -100 |
| float | 浮点数 | 3.14, 0.0001 |
| boolean | 布尔值 | true, false |
| array | 键值对集合 | ["apple", "banana"] |

比喻:可以把变量想象成抽屉,而数据类型决定了抽屉内存放物品的种类。例如,$price = 19.99 将一个浮点数存入名为 $price 的抽屉中。


运算符与表达式:程序的“逻辑纽带”

运算符用于对变量和值进行操作,生成新的结果。PHP 支持算术、比较、逻辑等运算符。

常用运算符分类

类型符号说明
算术运算符+, -, *, /执行加减乘除操作
比较运算符==, !=, >, <比较两个值的大小或相等性
逻辑运算符&&,, !结合多个条件判断

案例

// 算术运算  
$sum = 10 + 5 * 2; // 20  

// 比较运算  
$is_old = ($age >= 18) ? true : false;  

// 逻辑运算  
if ($isLoggedIn && $hasPermission) {  
    echo "允许访问";  
}  

控制结构:程序的“决策树”

控制结构用于根据条件或循环执行代码块,是程序逻辑的核心。

条件语句:if-elseswitch

if-else 用于判断单个或多个条件,switch 则适用于多分支选择。

// if-else 示例  
$score = 85;  
if ($score >= 90) {  
    echo "优秀";  
} elseif ($score >= 70) {  
    echo "良好";  
} else {  
    echo "需努力";  
}  

// switch 示例  
$day = "Monday";  
switch ($day) {  
    case "Saturday":  
    case "Sunday":  
        echo "周末";  
        break;  
    default:  
        echo "工作日";  
}  

比喻if-else 好比交通灯,根据不同的条件(红灯停、绿灯行)引导代码执行方向;而 switch 则像一个分拣员,将输入值分配到对应的分支。

循环结构:for, while, foreach

循环用于重复执行代码块,减少冗余代码。

for 循环:固定次数的循环

// 输出 1 到 5  
for ($i = 1; $i <= 5; $i++) {  
    echo $i . " "; // 输出:1 2 3 4 5  
}  

while 循环:动态条件循环

$count = 3;  
while ($count > 0) {  
    echo "剩余次数:" . $count . "\n";  
    $count--;  
} // 输出:剩余次数:3, 2, 1  

foreach 循环:遍历数组

$fruits = ["apple", "banana", "orange"];  
foreach ($fruits as $fruit) {  
    echo "水果:" . $fruit . "\n";  
}  

函数与作用域:代码的“复用工具箱”

函数是封装可重复使用的代码块,提升开发效率。

函数的定义与调用

// 定义函数  
function calculateTax($price, $taxRate = 0.1) {  
    return $price * (1 + $taxRate);  
}  

// 调用函数  
$taxedPrice = calculateTax(100); // 110  

作用域:变量的可见范围

PHP 的作用域分为全局、局部和静态作用域。

$globalVar = "全局变量"; // 全局作用域  

function testScope() {  
    global $globalVar; // 显式访问全局变量  
    echo $globalVar; // 输出:"全局变量"  

    $localVar = "局部变量"; // 局部作用域  
}  

// 静态变量示例  
function counter() {  
    static $count = 0;  
    $count++;  
    return $count;  
}  
echo counter(); // 1  
echo counter(); // 2(静态变量保留状态)  

数组与字符串操作:数据的“组织与处理”

数组的类型与操作

PHP 支持索引数组、关联数组和多维数组。

索引数组

$numbers = [10, 20, 30];  
echo $numbers[1]; // 输出:20  

关联数组

$user = [  
    "name" => "Bob",  
    "age" => 30  
];  
echo $user["age"]; // 输出:30  

多维数组

$matrix = [  
    [1, 2],  
    [3, 4]  
];  
echo $matrix[1][0]; // 输出:3  

字符串操作函数

PHP 提供丰富的字符串处理函数,例如:

$text = "Hello PHP!";  

// 长度  
echo strlen($text); // 10  

// 替换字符  
echo str_replace("PHP", "JavaScript", $text); // "Hello JavaScript!"  

// 截取子串  
echo substr($text, 6); // "PHP!"  

面向对象编程(OOP):代码的“模块化构建”

PHP 5 引入了完整的 OOP 特性,支持类、对象、继承和多态。

类与对象的基础

class User {  
    public $name;  
    private $email; // 私有属性  

    public function __construct($name, $email) {  
        $this->name = $name;  
        $this->email = $email;  
    }  

    public function getDetails() {  
        return "姓名:" . $this->name . ", 邮箱:" . $this->email;  
    }  
}  

$user1 = new User("Alice", "alice@example.com");  
echo $user1->getDetails(); // 输出对象信息  

继承与多态

class Admin extends User {  
    public $role = "管理员";  

    public function getDetails() {  
        return parent::getDetails() . ", 角色:" . $this->role;  
    }  
}  

$admin = new Admin("Bob", "bob@example.com");  
echo $admin->getDetails(); // 输出扩展后的内容  

错误与异常处理:程序的“安全网”

PHP 提供了多种方式处理错误和异常,避免程序崩溃。

错误级别与抑制

PHP 定义了多个错误级别(如 E_NOTICE, E_WARNING),可通过 error_reporting() 控制。使用 @ 符号可抑制单次错误输出:

$result = @file_get_contents("nonexistent_file.txt");  
if ($result === false) {  
    echo "文件读取失败";  
}  

异常处理机制

function divide($a, $b) {  
    if ($b == 0) {  
        throw new Exception("除数不能为零");  
    }  
    return $a / $b;  
}  

try {  
    echo divide(10, 0);  
} catch (Exception $e) {  
    echo "错误:" . $e->getMessage(); // 输出异常信息  
}  

PHP 语法的实践案例:构建一个简易博客系统

通过一个简单博客系统案例,整合上述知识点:

1. 数据库连接

<?php  
$servername = "localhost";  
$username = "root";  
$password = "";  
$dbname = "blog";  

// 创建连接  
$conn = new mysqli($servername, $username, $password, $dbname);  

// 检查连接  
if ($conn->connect_error) {  
    die("连接失败: " . $conn->connect_error);  
}  
?>  

2. 文章显示功能

// 查询文章列表  
$sql = "SELECT * FROM posts ORDER BY created_at DESC";  
$result = $conn->query($sql);  

if ($result->num_rows > 0) {  
    while($row = $result->fetch_assoc()) {  
        echo "<h2>" . $row["title"] . "</h2>";  
        echo "<p>" . $row["content"] . "</p>";  
    }  
} else {  
    echo "暂无文章";  
}  

3. 用户登录验证

class UserAuth {  
    private $conn;  

    public function __construct($db) {  
        $this->conn = $db;  
    }  

    public function login($username, $password) {  
        $stmt = $this->conn->prepare("SELECT * FROM users WHERE username = ?");  
        $stmt->bind_param("s", $username);  
        $stmt->execute();  
        $result = $stmt->get_result();  

        if ($result->num_rows > 0) {  
            $user = $result->fetch_assoc();  
            if (password_verify($password, $user["password"])) {  
                return true;  
            }  
        }  
        return false;  
    }  
}  

结论

PHP 语法的学习是一个循序渐进的过程,从基础变量到复杂对象,每个知识点都为构建完整的 Web 应用奠定基础。本文通过变量、控制结构、函数、OOP 等核心概念的讲解,结合实际代码案例,帮助开发者掌握 PHP 语法的底层逻辑。建议读者通过持续练习和项目实践(如搭建个人博客或电商系统),逐步深化对 PHP 语法的理解与应用能力。

掌握 PHP 语法后,开发者可以进一步探索框架(如 Laravel、Symfony)或结合前端技术(如 JavaScript、React)构建更复杂的 Web 应用。记住,编程不仅是代码的堆砌,更是逻辑思维的体现——只有理解语法背后的原理,才能写出高效、可维护的代码。

最新发布