浅谈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 相关文章推荐
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
PHP Array交叉表实现代码
Aug 05 PHP
php array的学习笔记
May 16 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
Apr 01 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
简单谈谈PHP面向对象之标识对象
Jun 27 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
用php如何解决大文件分片上传问题
Jul 07 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
Session的工作方式
2006/10/09 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
JavaScript 对象模型 执行模型
2010/10/15 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
layui table 参数设置方法
2018/08/14 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
js实现网页随机验证码
2020/10/19 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
Python lxml模块安装教程
2015/06/02 Python
python中字符串的操作方法大全
2018/06/03 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
浅析PEP572: 海象运算符
2019/10/15 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
中学生自我评价范文
2015/03/03 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书