浅谈PHP7的新特性

我以前用过的php的最高版本是php5.6。在换新工作之后,公司使用的是PHP7。据说PHP7的性能比之前提高很多。下面整理下php7的新特性。力求简单了解。不做深入研究。

1.变量类型声明

2.增加了返回值类型声明。

  • 现在可以指定函数的返回值的数据类型了。
  • 返回值可声明类型,参考变量类型声明。
function hasReturn() : bool
{

}

3.null合并运算符

  • 这个特性很好啊。很多三元表达式+isset()的写法可以用这种方法来写了。
  • null合并运算符:如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。 很像mysql的ifnull()。
$value = $_GET[‘memc_codes‘] ?? ‘没使用优惠券啊‘;

4. 太空船操作符

  • 用于比较两个表达式,判断他们之间的大小关系,小于、等于、大于分别返回-1,0,1.
echo 1 <=> 1;
echo 1 <=> 2;
echo 2 <=> 1;

5. defin() 可以定义数组常量

  • 也就是说常量可以被定义成数组

6. 可以通过new class来实例化一个匿名类

  • 匿名类,可以用完就扔。

7. 支持 Unicode codepoint 转译语

8. Closure::call() 暂时绑定一个方法到对象上闭包并立即调用

class A { private $lang = ‘php‘;}

$getLang = function() { return $this->lang;};
echo $getLang->call(new A); // 暂时将getLang函数绑定到A上,并执行它

9. unserialize() 第二个参数可以对反序列化的数据进行过滤

  • 防止代码注入

10. 新增intlChar用于操作多字符集的unicode字符

11. assert() 增加,写codeception更方便了

  • assert() 现在是一个语言结构。第一个可以是参数是表达式。

12. 一个use可以导入多个类了

use model\A,B,C;

13. 生成器可以返回表达式,并且通过调用Generator::getReturn()方法来获取生成器的值。

$gen = (function(){
    yield 1;
    return 3;
})();

foreach ($gen as $val) {
    echo $val,PHP_EOL;
}

echo $gen->getReturn(),PHP_EOL; ## 这里

14. 生成器中可以使用 yield from引入其他生成器

function gen() {
    yield 1;
    yield from gen2();
}

function gen2() {
    yield 3;
    yield 4;
}

froeach ($gen as $val) {
    echo $val,PHP_EOL;
}

15. 新增加了正常函数intdiv()

echo intdiv(10,3); // 3

16. session_start() 新增参数可以修改系统设定值

17. 新增preg_replace_callback_array()函数, 可以传多个匿名函数构成的数组进去. 比 preg_replace_callback()更简洁。

18.增加 random_bytes() 和 random_int() 方便取随机数

19. 可以使用 list() 函数来展开实现了 ArrayAccess 接口的对象

时间: 2024-09-30 11:13:53

浅谈PHP7的新特性的相关文章

浅谈测试rhel7新功能时的感受及遇到的问题

半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. 安装还算顺利,安装的界面比以前简洁的多,很清爽,分类很是明确. 有些奇怪的是,我安装的时候,怕有些基础的包没有装上去,所以选定了mini和Web的类型,结果还是有些基础的包没有安装,比如 ifconfig . 虚拟机的网卡,被识别为ens,有意思. yum groupinstall Base 这样的话,就可以把一些基础的包打上.可以正常的时候ifconfig lsof  . 这里需要说明的是,re

php7.0 和 php7.1新特性

PHP7.1 新特性 1.可为空(Nullable)类型 类型现在允许为空,当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null .可以通过在类型前面加上一个问号来使之成为可为空的. function test(?string $name) { var_dump($name); } 以上例程会输出: string(5) "tpunt" NULL Uncaught Error: Too few arguments to function test(), 0 p

浅谈测试rhel7新功能时的感受及遇到的问题【转载】

半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. rhel7的下载地址: https://access.redhat.com/site/downloads/ 安装还算顺利,安装的界面比以前简洁的多,很清爽,分类很是明确. 有些奇怪的是,我安装的时候,怕有些基础的包没有装上去,所以选定了mini和Web的类型,结果还是有些基础的包没有安装,比如 ifconfig . 虚拟机的网卡,被识别为ens,有意思. yum groupinstall Base

浅谈WebView在新窗口浏览网页(setSupportMultipleWindows()与onCreateWindow()关系)

一,写在前面 我们平常使用电脑浏览器浏览网页可能会有三种方式: 1.新窗口 2.当前窗口种的新选项卡 3.当前选项卡或者窗口 我们知道在电脑系统中同一时间可以开启多个相同的进程,就像你可以同时登陆2个qq一样,而在手机中,同一进程只能有一个在运行. 对比智能手机的浏览器如:QQ浏览器,百度浏览器,电脑浏览器中的新窗口相当于重新开启了一个浏览器,而在手机中,我们是使用WebView加载网页,虽然浏览器其应用进程只有一个, 但是内存中WebView对象可以有多个.在手机上的新窗口就是另外创建一个We

php7的新特性

新增操作符1.??$username = $_GET['user'] ?? '';$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 2.<=>$number1 <=> $number2; 当 $number1 小于.等于.大于 $number2 时 分别返回 -1,0,1 新增函数intdiv(被除数, 除数) — 对除法结果取整intdiv(3, 2) //1 define 可以定义数组define('ANI

浅谈iOS IPv6-only 新规

5月份苹果发布新规,对于开发人员只需要做到以下几点就能顺利上线啦! 1.苹果从6月1日起,提供App Store审核的应用必须要兼容面向硬件识别和网络路由的最新互联网协议--IPv6-only标准.也就是说,如果不能兼容,就面临着不能审核上线的. 2.什么是IPv6-only(64位编码地址),它时最新的互联网协议,以前我们大部分用的是IPv4(32位编码地址),例如:192.168.1.1然而,这样的地址已经不够用了!!所以就有了类似2001:da8:215:4009:250:56ff:fe9

php7.0新特性

1.运算符: $a = $_GET['a'] ?? 1 等价于 $a = isset($_GET['a']) ? $_GET['a'] : 1; 2,.函数返回值声明 function 函数名() :返回值类型 3.php使用try catch去捕获错误 记住不是抛出异常 这个特性就是像java靠拢的 set_exception_handler('xiaoming'); non_exists_func(); function xiaoming($param) { echo "\n I catch

c#核心基础 - 浅谈 c# 中的特性 Attribute)

特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签.可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它所应用的元素前面的方括号[ ]来描述的. .Net 框架提供了两种类型的特性:预定义特性和自定义特性. 一.运用范围 程序集,模块,类型(类,结构,枚举,接口,委托),字段,方法(含构造),方法,参数,方法返回值,属性(property),Attribute [AttributeUsage(AttributeTar

学习之路(二)浅谈:bash及其特性,命令历史以及用户管理及权限,shell的类型

过了一周了,进度似乎有点懈怠,不过过了周末重整旗鼓啦shell(外壳)GUI:Gnome,KDE,xfceCLI:sh,csh,ksh,bashbash(父进程)-----bash(子进程)他们相互独立彼此不知命令历史:historybash支持的引号:' '命令替换(键盘~的按键)" "弱引用,可以实现变量替换 强引用,不完成变量替换文件名通配符: :任意字符? :任意单个字符[ ]:匹配指定范围内的任意单个字符bash的配置文件全局配置/etc/profile : /etc/pro