资讯专栏INFORMATION COLUMN

PHP 7.0 & 7.1 部分新增特性备忘

philadelphia / 3080人阅读

摘要:以下分别备忘版本的部分新增特性。而且,在生成器没有输出完全时,使用会报错。报错定义常量数组多声明数组解构运行时将部分指令转为机器码。对于计算密集型应用有较高的性能提升。

以下分别备忘 PHP 7.0 & 7.1 版本的部分新增特性。

PHP 7.0 ?? 运算符
$foo = null;
$bar = $foo ?? 123;

// 相当于 $bar = isset($bar) ? $bar : 123
参数类型、返回类型与严格模式
// 在严格模式下,传参类型不匹配会抛出错误

declare(strict_types=1);

function fn(int $a) : int
{
    echo $a;
}

fn(1.2);
组合比较符

二者相等时返回 0;

前者大于后者返回 1;
后者大于前者返回 -1;

var_dump($a <=> $b);
$a = 0;
$b = "abc";

var_dump($a <=> $b);
// 注意,字符串在与数字比较时会被当作 0;
含有返回值的生成器
function generator()
{
    yield 1;
    yield 2;
    return "a";
}

$generator = generator();
foreach ($generator as $val) {
    var_dump($val);
}

var_dump($generator->getReturn());

当没有返回值而使用 $generator->getReturn() 时,会返回 null。而且,在生成器没有输出完全时,使用 $generator->getReturn() 会报错。

function generator()
{
    yield 1;
    yield 2;
    return "a";
}

$generator = generator();

var_dump($generator->current());
var_dump($generator->next());

var_dump($generator->getReturn()); // 报错

var_dump($generator->current());
var_dump($generator->next());
定义常量数组
define("COLORS", ["red", "blue", "black"]);
echo COLORS[1];  // red
多 use 声明
use some
amespace{ClassA, ClassB, ClassC as C};
use function some
amespace{fn_a, fn_b, fn_c};
use const some
amespace{ConstA, ConstB, ConstC};
数组解构
list($a, $b) = ["a", "b"];
PHP 7.1 JIT

JIT, just in time. 运行时将部分指令转为机器码。对于计算密集型应用有较高的性能提升。

可选参数类型
function(?string $name)
{
    var_dump($name);
}

// 传参类型为 string 或 null

注意与默认参数值的区别:

function(string $name = "default-name")
{
    var_dump($name);
}
数组解构
[$a, $b] = ["a", "b"];
iterable & callable 伪类类型

使用 callable 类型代表传参类型为可调用的类型( 函数、实现了 __invoke 的类实例 );

使用 iterable 类型限制传参类型为可迭代类型( 数组、实现了 Iterator 或 Traversable 接口的类实例 );

多异常类型捕获
try {
    
} catch (OneException | AnotherException $e) {
    
}

参考

PHP 7.0,PHP 7.1.x 新特性 - CSDN

深入浅析PHP7.0新特征(五大新特征)

PHP中的魔术方法总结 - CSDN

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22546.html

相关文章

  • PHP 历代版本特性

    摘要:历代版本主要特性支持新增魔术方法命名空间三元运算符数组简写迭代器生成器读取大文件时常量增强可变函数命名空间增强号称比旧版本快了几倍引擎优化以前的致命错误,现在改成抛出异常新增了空接合操作符新增接合比较运算符新增函数的返回类型声明新增加标 历代版本主要特性 5.2 : json支持 5.3 : 新增魔术方法、命名空间、const、三元运算符** 5.4 : 数组简写、Traits 5....

    dack 评论0 收藏0
  • PHP 5.6,7.0,7.1,7.2 和 HHVM 运行效率比较

    摘要:测试运行多次并取平均值。文章数量测试的基准测试基准测试结果基准测试结果基准测试结果基准测试结果基准测试结果基准测试结果不支持再次成为冠军请注意的运行环境需要或以上。同时,再次不能正常工作并抛出错误。 showImg(https://segmentfault.com/img/remote/1460000013690286); 我们每年都会尝试深入了解不同版本的 PHP 和 HHVM 在各...

    cnTomato 评论0 收藏0
  • 网站访问速度提升200%以上,阿里云虚拟主机支持PHP最新版本

    摘要:摘要日前,阿里云虚拟主机推出了新功能,支持的最新版本和,并支持用户在多个不同版本之间切换。目前,国内绝大多数虚拟主机服务商目前支持的最新版本还停留在时代,而阿里云推出了尤其是版本,是国内首家支持的虚拟主机服务商。 摘要: 日前,阿里云虚拟主机推出了新功能,支持PHP的最新版本 7.0和7.1,并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言,最新版本已经更新到...

    fou7 评论0 收藏0
  • 使用Docker统一团队的开发环境

    摘要:开场白作为一个技术团队的,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的如果你的回答是差不多就行了,有问题再说,那么,你已经在给自己挖坑了。好的,成员们开始构建你定制的开发环境了。 开场白 作为一个技术团队的Leader,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的?如果你的回答是:差不多就行了,有问题再说,那么,你已经在给自己挖坑了。 同事A...

    alin 评论0 收藏0
  • WordPress主题 Modown 6.2+Erphpdown 11.7虚拟素材资源付费下载

    wordpress主题 modown 6.2+Erphpdown 11.7虚拟素材资源付费下载源码名称:WordPress主题 modown 6.2+Erphpdown 11.7虚拟素材资源付费下载兼容版本:全部版本适配编码:GBK BIG5 UTF8SC UTF8TC演示地址:http://demo.mobantu.com/modown/(官方演示站,以截图为准)安装环境:安装要求:PHP 5....

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<