PHP能做到吗?
PHP 7 显著提升了整体性能。它确实引入了一些重要特性,例如空值合并运算符和返回类型声明。如果您还不了解这些特性,强烈建议您查阅 PHP 文档。
以下是一些不太为人所知但可能很有用的功能。
相同的命名空间,相同的用途
在 PHP 7 之前,开发人员通常会这样做:
use Universe\Saiyan;
use Universe\SuperSaiyan;
自 PHP 7 起:
use Universe\{Saiyan, SuperSaiyan};
函数和常量也是如此。如果它们属于同一个命名空间,就可以将它们分组。
常量可以是数组
define('NAMES', [
'first' => 'John',
'middle' => 'Fitzgerald',
'last' => 'Kennedy'
]);
echo NAMES['last']; //displays "Kennedy"
飞船操作员
它就是这样写的<=>。它结合了比较。它代表“小于、等于或大于”。当使用用户自定义的比较函数对数组进行排序时,由于其返回值,它非常有用:
- 如果值相等,则为 0。
- 1 如果左侧的值大于
- 如果右侧的值大于 -1,则返回 -1
现在让我们对以下女演员数组进行排序:
$actressesWithAcademyAwards = [
[ 'name' => 'Katharine Hepburn', 'awards' => 4 ],
[ 'name' => 'Jessica Lange', 'awards' => 2 ],
[ 'name' => 'Meryl Streep', 'awards' => 3 ],
[ 'name' => 'Cate Blanchett', 'awards' => 2 ],
];
与其写多行代码进行比较,不如用一行代码完成:
usort($actressesWithAcademyAwards, function ($a, $b) {
return $a['awards'] <=> $b['awards'];
});
print_r($actressesWithAcademyAwards);
返回结果:
Array
(
[0] => Array
(
[name] => Jessica Lange
[awards] => 2
)
[1] => Array
(
[name] => Cate Blanchett
[awards] => 2
)
[2] => Array
(
[name] => Meryl Streep
[awards] => 3
)
[3] => Array
(
[name] => Katharine Hepburn
[awards] => 4
)
)
这是一个非常常见的 PHP 例程,因此飞船操作员可以节省时间。而且,恕我直言,它更易于阅读。
数组的第一个/最后一个键(PHP 7.3)
自 PHP 7.3 起,您可以轻松获取数组的第一个和最后一个键:
$array = [ 'v' => 1, 'i' => 2, 'p' => 3 ];
$firstKey = array_key_first($array);
$lastKey = array_key_last($array);
print_r($firstKey); // v
print_r($lastKey); // p
非常干净利落,因为它不会影响内部数组指针。
数组中的扩展运算符(PHP 7.4)
此功能允许执行以下操作:
$abc = range('a', 'c');
$def = range('d', 'f');
$ghi = range('g', 'i');
$all = [...$abc, ...$def, ...$ghi, 'j'];
print_r($all);
你将获得:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => g
[7] => h
[8] => i
[9] => j
)
它基本上可以替代array_merge()大多数情况下的现有产品。
箭头函数(PHP 7.4)
请注意,目前它仅适用于只有一个表达式的简短闭包(因此称为“简短”):
$c = 3;
$addC = fn($x) => $x + $c;
echo $addC(70); // 73
无需use关键词。
持续可见性(PHP7.1)
class Mother {
private const ERROR_LEVEL_1 = 'achtung';
}
可见性有助于确保不应被覆盖的内容不会被覆盖。在 PHP 7.1 之前,对于类常量(始终是公共的)来说,这是不可能的。
包起来
PHP 7 功能强大。它速度更快,而且拥有许多出色的特性。你知道 PHP 7 能做到这些吗?
文章来源:https://dev.to/spo0q/php-7-can-do-that-57ol