浅谈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 相关文章推荐
ADODB结合SMARTY使用~超级强
Nov 25 PHP
php的字符串用法小结
Jun 08 PHP
php存储过程调用实例代码
Feb 03 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
PHP 开源框架22个简单简介
2009/08/24 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
php构造函数与析构函数
2016/04/23 PHP
PHP链表操作简单示例
2016/10/15 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
JS查看对象功能代码
2008/04/25 Javascript
javawscript 三级菜单的实现原理
2009/07/01 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
Python判断字符串与大小写转换
2015/06/08 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
python实现贪吃蛇双人大战
2020/04/18 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
QA工程师岗位职责
2013/11/20 职场文书
医院保洁服务方案
2014/06/11 职场文书
推广普通话标语
2014/06/27 职场文书
小学校长汇报材料
2014/08/20 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技