浅谈PHP7中的一些小技巧


Posted in PHP onMay 29, 2021

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

在 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']; //显示 "Kennedy"

太空船操作符

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

  • 0 如果值相等
  • 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().

在大多数情况下,它基本取代了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 之前,对于类常量(始终是公共的)来说是不可能的。

Constant visibility (PHP7.1)

class Mother {
    private const ERROR_LEVEL_1 = 'achtung';
}

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

结语

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

以上就是浅谈PHP7中的一些小技巧的详细内容,更多关于PHP7中的一些小技巧的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
dede全站URL静态化改造[070414更正]
Apr 17 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php向js函数传参的几种方法
Aug 10 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 PHP
详解Laravel服务容器的优势
May 29 #PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
浅谈Laravel中使用Slack进行异常通知
May 29 #PHP
详解Go与PHP的语法对比
May 29 #PHP
详解php中流行的rpc框架
如何在Mac上通过docker配置PHP开发环境
浅谈如何提高PHP代码质量之端到端集成测试
May 28 #PHP
You might like
深入php 正则表达式的学习探讨
2013/06/06 PHP
Laravel5中contracts详解
2015/03/02 PHP
php bootstrap实现简单登录
2016/03/08 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
详解Vue This$Store总结
2018/12/17 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
vue实现文字加密功能
2019/09/27 Javascript
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
《伯牙绝弦》教学反思
2014/03/02 职场文书
企业党员公开承诺书
2014/03/26 职场文书
档案信息化建设方案
2014/05/16 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
最感人的道歉情书
2015/05/12 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
聘任书范文大全
2015/09/21 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
使用springMVC所需要的pom配置
2021/09/15 Java/Android
利用Python实现Picgo图床工具
2021/11/23 Python