详解php7新特性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了详解php7新特性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4396字,纯文字阅读大概需要7分钟。
内容图文
这次给大家总结php7新特性,下面就是实战案例,一起跟随小编的脚步来看一下。php7新特性
标量类型声明(要求参数是一个具体的类型,如果参数类型不匹配,php5 会出现fatal 错误,php7 会抛 TypeError 异常)
有两种模式:强制(默认)和严格模式.
类型参数有:
1. string
2. int
3. float
4.bool
它们扩充了php5中引入的其他类型
1.类名
2. 接口
3.数组
4.回调类型
例如:
<span style="font-size:18px;">function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1));</span>
输出:
int(9)
返回类型声明
php7 增加了对返回类型的支持,其和参数类型声明非常相似,返回类型
声明指明了函数返回值的类型。可用的类型与参数声明中的可用类型相同。
例如:
<span style="font-size:18px;"><?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 以上例程会输出: Array ( [0] => 6 [1] => 15 [2] => 24 )</span>
NULL合并运算符
如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个参数
$username = $_GET['user'] ?? 'nobody';
上下两个表达式 的结果是一样的。
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
组合比较符
用于比较两个表达式。当$a 大于、等于或小于$b 时它分别返回1、0或-1.
例如:
<span style="font-size:18px;"><?php // Integers echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // Floats echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // Strings echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?></span>
通过define() 定义常量数组
<?php define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // outputs "cat" ?> php5.6 中 仅能通过const 定义 <?php const $a = [ 'a','b','c', ]; echo $a[1] ; //输出 “b” ?>
匿名类
现在可以通过支持new class 来实例化一个匿名类 , 这个可以用来代替一些只用一次的完成类
为unserialize()提供过滤
<span style="font-size:18px;"><?php // 把所有的对象转换为 __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => false]); // 除了MyClass,MyClass2 都转换为 into __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]); // 默认的行为,接受所有的参数 $data = unserialize($foo, ["allowed_classes" => true]); </span>
IntlChar
新增加的IntlChar 类 旨在暴露出更多的ICU功能,这个类自身定义了许多静态方法用于操作多字符集的unicode字符
如果要使用此类,需要先安装Intl扩展
预期
预期是向后兼用并增强之前的assert()的方法,它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特性异常的能力。
现在assert() 是一个语言结构,它允许第一个参数是一个表达式 而不仅仅是一个待计算的字符串或一个待测试的boolean
使用use 声明一组 类
如下:
<span style="font-size:18px;"><?php // Pre PHP 7 code use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7+ code use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; ?> </span>
生成器 return 表达式
如下:
<span style="font-size:18px;"><?php $gen = (function() { yield 1; yield 2; return 3; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL;// 换行,为了提高源码可读性 以上例程会输出: 1 2 3 </span>
生成器可以委托另一个生成器
如下:
<span style="font-size:18px;"><?php function gen() { yield 1; yield 2; yield from gen2(); } function gen2() { yield 3; yield 4; } foreach (gen() as $val) { echo $val, PHP_EOL; } ?> 以上例程会输出: 1 2 3 4 </span>
新增了 整形相除函数 intp()
如下:
<span style="font-size:18px;"><?php var_dump(intp(10, 3)); ?> 以上例程会输出: int(3) </span>
Session options
现在可以通过session_start() 接受一个数组参数,可以从写session 在 php.ini里的配置指令
参数支持session.lazy_write ,read_and_close,cache_limiter 等等
如下:
<span style="font-size:18px;"><?php session_start([ 'cache_limiter' => 'private', 'read_and_close' => true, ]); ?> </span>
新增 preg_replace_callback_array() 函数
可以是比preg_replace_callback() 执行的更好
新增 random_bytes() 和 random_int()两个函数
具体使用方法 请查看如下:
random_bytes()
random_int()
list() 不在支持自动解包
之前 list 对于操作实现了ArrayAccess的对象不提供保障,现在这个问题已经被解决了
以上就是详解php7新特性的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的详解php7新特性全部内容,希望文章能够帮你解决详解php7新特性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。