PHP 默认关键字
最后修改于 2025 年 4 月 16 日
PHP default 关键字在不同的上下文中具有多种用途。主要用于 switch 语句中作为备用情况,它也出现在数组解构和函数参数声明中。
基本定义
在 switch 语句中,default 指定当没有 case 匹配时要执行的代码。它是可选的,但为意外值提供了安全网。
对于数组,default 可以在解构赋值期间指定备用值。这可以防止在键不存在时出现未定义的索引错误。
在函数参数中,default 值使参数成为可选的。调用者可以省略带有默认值的参数,然后使用指定的值。
带有 default 的基本 switch 语句
此示例演示了 default 在 switch 语句中最常见的用法。
<?php
declare(strict_types=1);
$day = "Tuesday";
switch ($day) {
case "Monday":
echo "Start of work week";
break;
case "Friday":
echo "Almost weekend!";
break;
default:
echo "Regular weekday";
}
switch 检查 $day 变量是否与特定情况匹配。当没有 case 匹配时,将执行 default 块。Default 充当未处理值的 catch-all。它通常位于 switch 语句的最后。
数组解构中的 default
此示例展示了在解构关联数组时使用默认值。
<?php declare(strict_types=1); $user = ['name' => 'John', 'age' => 30]; ['name' => $name, 'role' => $role = 'guest'] = $user; echo "Name: $name, Role: $role";
代码将数组值提取到变量中。role 键不存在,因此使用默认值 'guest'。这可以防止未定义的索引错误,同时提供合理的备用方案。Defaults 适用于索引数组和关联数组。
函数参数默认值
此示例演示了函数声明中的默认参数值。
<?php
declare(strict_types=1);
function greet(string $name, string $greeting = "Hello") {
echo "$greeting, $name!";
}
greet("Alice"); // Uses default greeting
greet("Bob", "Hi"); // Overrides default
greet 函数使用默认值使 $greeting 参数成为可选的。调用者可以省略它以使用 "Hello" 或指定自定义问候语。默认参数必须在声明中的必选参数之后。
多个 Default 情况
此示例展示了 default 如何与多个 switch case 一起使用。
<?php
declare(strict_types=1);
$score = 75;
switch (true) {
case $score >= 90:
echo "Grade: A";
break;
case $score >= 80:
echo "Grade: B";
break;
case $score >= 70:
echo "Grade: C";
break;
default:
echo "Grade: F";
}
switch 有条件地评估每个 case。default case 处理低于 70 的分数。由于 break 语句,只有一个 case 执行。此模式对于 if-elseif 会冗长的基于范围的条件很有用。
Match 表达式中的 Default
此示例演示了 PHP 8 的 match 表达式中的 default。
<?php
declare(strict_types=1);
$status = 404;
$message = match($status) {
200 => 'OK',
301 => 'Moved Permanently',
404 => 'Not Found',
default => 'Unknown Status'
};
echo $message;
match 表达式是 switch 的更简洁的替代方案。它的 default case 处理任何未列出的状态代码。与 switch 不同,match 执行严格比较并返回值。如果未涵盖所有可能的值,则需要 default。
Default 数组合并
此示例展示了在合并配置数组时使用默认值。
<?php declare(strict_types=1); $defaults = ['color' => 'red', 'size' => 'medium']; $userPrefs = ['color' => 'blue']; $config = array_merge($defaults, $userPrefs); print_r($config);
代码将默认值与用户偏好合并。$userPrefs 中缺失的键保留其默认值。此模式对于配置系统很常见。数组并集运算符 (+) 也可以使用,但对数字键的行为不同。
Default 类属性
此示例演示了类定义中的默认属性值。
<?php
declare(strict_types=1);
class Product {
public string $name = 'Unknown';
public float $price = 0.0;
public bool $inStock = false;
}
$product = new Product();
echo "{$product->name}: \${$product->price}";
Product 类定义了所有属性的默认值。新实例从这些默认值开始,除非被覆盖。默认值确保对象始终具有有效的属性值。它们对于数据传输对象和配置类特别有用。
最佳实践
- Switch defaults: 始终在 switch 语句中包含 default case 以增强鲁棒性。
- 数组安全性: 在解构数组时使用默认值以避免未定义的索引错误。
- 函数参数: 在函数声明中将具有默认值的参数放在必选参数之后。
- 文档: 在代码注释中清晰地记录默认行为。
- 一致性: 在相关函数中使用类似的默认值以实现可预测的行为。
来源
本教程通过示例介绍了 PHP default 关键字,展示了它在 switch 语句、数组、函数和类属性中的用法。
作者
列出 所有 PHP 教程。