PHP 总是在不断发展,了解最新的功能和改进非常重要。本文介绍了 2023 年您应该了解的 20 个 PHP 功能,每个功能都配有方便的代码示例。
1. str_contains():
检查一个字符串是否包含在另一个字符串中。
$sentence = "The quick brown 🦊 jumps over the lazy 🐶.";
$word = "🦊";
if (str_contains($sentence, $word)) {
echo "The sentence contains the word 🦊.";
}
2. str_starts_with():
检查字符串是否以给定子字符串开头。
$sentence = "🚀 Launching into space!";
if (str_starts_with($sentence, "🚀")) {
echo "The sentence starts with a rocket emoji!";
}
3. str_ends_with():
检查字符串是否以给定子字符串结尾。
$sentence = "It's a beautiful day! ☀️";
if (str_ends_with($sentence, "☀️")) {
echo "The sentence ends with a sun emoji!";
}
4. get_debug_type():
获取变量的类型。
$num = 42;
echo get_debug_type($num); // "integer"
5. 获取资源id():
返回给定资源的唯一标识符。
$file = fopen('test.txt', 'r');
echo get_resource_id($file); // e.g., "7"
6. fdiv():
除法功能,包括支持除以零。
$result = fdiv(10, 0); // INF
7. preg_last_error_msg():
返回最后一个 PCRE 正则表达式执行错误的人类可读消息。
preg_match('/(/', '');
echo preg_last_error_msg(); // "missing )"
8. array_key_first():
获取数组的第一个键。
$array = ['🍏'=>'Apple', '🍊'=>'Orange', '🍇'=>'Grape'];
echo array_key_first($array); // "🍏"
9. array_key_last():
获取数组的最后一个键。
$array = ['🍏'=>'Apple', '🍊'=>'Orange', '🍇'=>'Grape'];
echo array_key_last($array); // "🍇"
10.ErrorException::getSeverity():
获取错误的严重性。
try {
trigger_error("Custom error", E_USER_WARNING);
} catch (ErrorException $e) {
echo $e->getSeverity(); // 512
}
11. Filter Functions:
PHP 8 引入了几个新的filter函数。下面是使用 filter_var 和 FILTER_VALIDATE_BOOL 的示例:
var_dump(filter_var('yes', FILTER_VALIDATE_BOOL)); // bool(true)
12. Weak Map:
一个保存对象引用的新类,它不会阻止这些对象被垃圾收集。
$weakmap = new WeakMap();
$obj = new stdClass();
$weakmap[$obj] = 'Hello, world!';
13. Value Objects:
PHP 8 引入了构造函数属性提升,这是一种用于构造值对象的新语法。
class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}
$tenDollars = new Money(10, 'USD');
14. Match Expression:
这是一个类似 switch 的语句。
echo match (1) {
0 => '🚫',
1 => '✅',
default => '⁉️',
};
15. Nullsafe Operator:
这个新运算符 (?->) 允许在访问属性或方法时进行 null 检查。
class User {
public function getAddress(): ?Address {
// returns Address or null
}
}
$user = new User();
$country = $user?->getAddress()?->country; // no error if getAddress() returns null
16. Named Arguments:
此功能允许您通过指定值名称将值传递给函数。
new Money(amount: 10, currency: 'USD');
17. Attributes:
在其他编程语言中也称为注释。
#[Attribute]
class ExampleAttribute {}
#[ExampleAttribute]
class ExampleClass {}
18. Constructor Property Promotion:
此功能允许将类属性和构造函数组合到单个声明中。
class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}
19. Union Types:
此功能允许类型声明可以是多种类型之一。
function print_id(int|string $id): void {
echo 'ID: ' . $id;
}
20. 及时编译(JIT):
PHP 8 引入了两个 JIT 编译引擎:Tracing JIT 和 Function JIT。
注意:JIT 编译不是一个可以直接用代码片段演示的功能,但它是 PHP 8 中的一项重要改进,可以提供显着的性能改进。
总结
PHP 是一种在不断发展的语言,具有许多令人兴奋的新功能和改进。无论您是经验丰富的 PHP 开发人员还是新手,都值得花时间了解这些新功能并在代码中使用它们。
保持好奇心,不断学习,祝你学习愉快!