浅谈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数据库抽象层 PDO
May 07 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
thinkPHP分页功能实例详解
May 05 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
PHP dirname简单使用代码实例
Nov 13 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
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
Javascript的&amp;&amp;和||的另类用法
2014/07/23 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python中return语句用法实例分析
2015/08/04 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
python try 异常处理(史上最全)
2019/03/07 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
python实现的Iou与Giou代码
2020/01/18 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
python实现人像动漫化的示例代码
2020/05/17 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
中东奢侈品市场:Coveti
2019/05/12 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
建筑专业毕业生推荐信
2013/11/21 职场文书
初中历史教学反思
2016/02/19 职场文书
Python创建SQL数据库流程逐步讲解
2022/09/23 Python