浅谈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 相关文章推荐
基于文本的访客签到簿
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 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
文章推荐系统(三)
2006/10/09 PHP
浅谈php自定义错误日志
2015/02/13 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
广州一家公司的.NET面试题
2016/06/11 面试题
服务标兵事迹材料
2014/05/04 职场文书
家长学校培训材料
2014/08/20 职场文书
大学生作弊检讨书
2014/09/11 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS