浅谈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 相关文章推荐
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
php array_walk() 数组函数
Jul 12 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
php随机抽奖实例分析
Mar 04 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 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面向对象编程快速入门
2006/10/09 PHP
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
javascript 解析url的search方法
2010/02/09 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
Python PyQt5整理介绍
2020/04/01 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
酒店总经理欢迎词
2014/01/08 职场文书
5s推行计划书
2014/05/06 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis