当前位置:首页 > PHP教程 > php应用 > 列表

浅谈PHP7中的一些小技巧

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-01 19:39:29 浏览: 评论:0 

PHP7显著提高了整体性能。实际上主要的特性有null合并运算符或返回类型声明。如果你不知道它们,那么你应该去查看PHP文档。这里有一些很少人知道的、可能有用的特性。

相同的命名空间,相同的 use

在 PHP 7 之前,开发者经常这么做:

use Universe\Saiyan;

use Universe\SuperSaiyan;

从 PHP 7 开始:

use Universe\{Saiyan, SuperSaiyan};

函数和常量也是一样的。如果它们属于同一命名空间,则可以对它们进行分组。

常量可以是数组:

  1. define('NAMES', [ 
  2.     'first'  => 'John', 
  3.     'middle' => 'Fitzgerald', 
  4.     'last'   => 'Kennedy' 
  5. ]); 
  6.    
  7. echo NAMES['last']; //显示 "Kennedy" 
太空船操作符

它的写法是这样的<=>。它结合了比较。它表示 “小于,等于或大于”。当使用用户定义的比价函数对数组进行排序时,它非常有用,因为返回值是:

0 如果值相等

1 如果左边的值更大

-1 如果右边的值更大

那么,让我们对以下女演员进行排序:

  1. $actressesWithAcademyAwards = [ 
  2.     [ 'name' => 'Katharine Hepburn', 'awards' => 4 ], 
  3.     [ 'name' => 'Jessica Lange', 'awards' => 2 ], 
  4.     [ 'name' => 'Meryl Streep', 'awards' => 3 ], 
  5.     [ 'name' => 'Cate Blanchett', 'awards' => 2 ], 
  6. ]; 

你可以用一行来代替多行来进行比较:

  1. usort($actressesWithAcademyAwards, function ($a, $b) { 
  2.     return $a['awards'] <=> $b['awards']; 
  3. }); 
  4.    
  5. print_r($actressesWithAcademyAwards); 

返回:

  1. Array 
  2.  
  3. ( 
  4.  
  5.     [0] => Array 
  6.  
  7.         ( 
  8.  
  9.             [name] => Jessica Lange 
  10.  
  11.             [awards] => 2 
  12.  
  13.         ) 
  14.  
  15.     [1] => Array 
  16.  
  17.         ( 
  18.  
  19.             [name] => Cate Blanchett 
  20.  
  21.             [awards] => 2 
  22.  
  23.         ) 
  24.  
  25.     [2] => Array 
  26.  
  27.         ( 
  28.  
  29.             [name] => Meryl Streep 
  30.  
  31.             [awards] => 3 
  32.  
  33.         ) 
  34.  
  35.     [3] => Array 
  36.  
  37.         ( 
  38.  
  39.             [name] => Katharine Hepburn 
  40.  
  41.             [awards] => 4 
  42.  
  43.         ) 
  44.  
  45. ) 

这是一个非常常见的 PHP 用例,因此太空船操作符可以节省时间。另外,它的可读性更强。

数组的第一 / 最后一个键 (PHP 7.3)

从 PHP 7.3 开始,你可以很容易地得到数组的第一个键和最后一个键:

  1. $array = [ 'v' => 1, 'i' => 2, 'p' => 3 ]; 
  2.    
  3. $firstKey = array_key_first($array); 
  4. $lastKey = array_key_last($array); 
  5.    
  6. print_r($firstKey); // v 
  7. print_r($lastKey); // p 

真的很简单,因为它不影响内部数组指针。

数组延展操作符 (PHP 7.4)

该特性可以实现以下功能:

  1. $abc = range('a', 'c'); 
  2. $def = range('d', 'f'); 
  3. $ghi = range('g', 'i'); 
  4. $all = [...$abc, ...$def, ...$ghi, 'j']; 
  5. print_r($all); 

得到:

  1. Array 
  2.  
  3. ( 
  4.  
  5.     [0] => a 
  6.  
  7.     [1] => b 
  8.  
  9.     [2] => c 
  10.  
  11.     [3] => d 
  12.  
  13.     [4] => e 
  14.  
  15.     [5] => f 
  16.  
  17.     [6] => g 
  18.  
  19.     [7] => h 
  20.  
  21.     [8] => i 
  22.  
  23.     [9] => j 
  24.  
  25. ) 

在大多数情况下,它基本取代了array_merge().

箭头函数 (PHP 7.4)

请注意,因为现在它指的是只有一个表达式的短闭包(因此有了 “短” 这个字):

  1. $c = 3; 
  2. $addC = fn($x) => $x + $c; 
  3. echo $addC(70); // 73 

不需要use关键字。

常量的可见性 (PHP7.1)

  1. class Mother { 
  2.     private const ERROR_LEVEL_1 = 'achtung'; 
  3. } 

可见性有助于确保不应该被覆盖的内容不会被覆盖,在 PHP 7.1 之前,对于类常量(始终是公共的)来说是不可能的。

Constant visibility (PHP7.1)

  1. class Mother { 
  2.     private const ERROR_LEVEL_1 = 'achtung'; 
  3. } 

可见性有助于确保不应被覆盖的内容不被覆盖。在PHP 7.1之前,对于类常量(始终是公共的)这是不可能的。

结语

PHP 7 是强大的。它速度更快,功能更强大。你知道 PHP 7 可以完成这些事吗?

Tags: PHP7小技巧

分享到: