浅谈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 array_slice函数的使用以及参数详解
Aug 30 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
php数据库密码的找回的步骤
Jan 12 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
php实现简单文件下载的方法
Jan 30 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 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信号量基本用法实例详解
2016/02/12 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
js实现交通灯效果
2017/01/13 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
一些Python中的二维数组的操作方法
2015/05/02 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
职业技术学校毕业生推荐信
2013/12/03 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
实习协议书
2015/01/27 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技