浅谈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&amp;java(一)
Oct 09 PHP
PHP开发框架总结收藏
Apr 24 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
PHP 5.3新特性命名空间规则解析及高级功能
Mar 11 PHP
PHP 魔术函数使用说明
May 14 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
基于swoole实现多人聊天室
Jun 14 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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.ini中文版
2006/10/09 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
js简单抽奖代码
2015/01/16 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
node.js获取参数的常用方法(总结)
2017/05/29 Python
Python之时间和日期使用小结
2019/02/14 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
说明书范文
2014/05/07 职场文书
农业生产宣传标语
2014/10/08 职场文书
客房服务员岗位职责
2015/02/09 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python