浅谈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学习之PHP变量
Oct 09 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
PHP程序员的技术成长规划
Mar 25 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
基于JavaScript获取base64图片大小
2019/10/18 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
Python、Javascript中的闭包比较
2015/02/04 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python字符串处理实例详解
2017/05/18 Python
Python实现DDos攻击实例详解
2019/02/02 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
住宅使用说明书
2014/05/09 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
委托书的格式
2014/08/01 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
计算机实训报告总结
2014/11/05 职场文书
大学同学聚会感言
2015/07/30 职场文书
污染环境建议书
2015/09/14 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
新手入门Mysql--sql执行过程
2021/06/20 MySQL
Java 死锁解决方案
2022/05/11 Java/Android