浅谈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 相关文章推荐
PHP循环语句笔记(foreach,list)
Nov 29 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
浅析php学习的路线图
Jul 10 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
php中explode函数用法分析
Nov 15 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 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/11/25 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
JS之小练习代码
2008/10/12 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python数据结构之翻转链表
2017/02/25 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python datetime中strptime用法详解
2019/08/29 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
高校教师个人总结
2015/02/10 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
2016年清明节寄语
2015/12/04 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
2019财务转正述职报告
2019/06/27 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL