浅谈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下将XML转换为数组
Jan 01 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
php curl的深入解析
Jun 02 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
composer.lock文件的作用
Feb 03 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
CodeIgniter整合Smarty的方法详解
Aug 25 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获取当月最后一天函数分享
2015/02/02 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
python实现自动打卡的示例代码
2020/10/10 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
《月迹》教学反思
2014/02/19 职场文书
中队活动总结
2014/08/27 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
2019各种保证书范文
2019/06/24 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android