PHP7与php5
php在2015年12月03日发布了7.0正式版,带来了许多新的特性,以下是不完全列表:
性能提升:PHP7比PHP5.6性能提升了两倍。 Improved performance: PHP 7 is up to twice as fast as PHP 5.6
全面一致的64位支持。 Consistent 64-bit support
以前的许多致命错误,现在改成抛出异常。Many fatal errors are now Exceptions
移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。Removal of old and unsupported SAPIs and extensions
新增了空接合操作符。The null coalescing operator (??)
新增加了结合比较运算符。Combined comparison Operator (<=>)
新增加了函数的返回类型声明。Return Type Declarations
新增加了标量类型声明。Scalar Type Declarations
新增加匿名类。Anonymous Classes
本教程主要讲解swoole将要用到或有相关性的特性
#致命错误将可用异常形式抛出
在php7之后,大部分错误可通过异常形式抛出,并可使用catch拦截,例如:
try {
$a->test();//未定义该对象并没有该方法,抛出一个Throwable类
// Code that may throw an Exception or Error.
} catch (Throwable $t) {
var_dump($t->getMessage());
// Executed only in PHP 7, will not match in PHP 5
} catch (Exception $e) {
}
运行之后将打印一条报错语句:
string(40) "Call to a member function test() on null"
#?? null合并运算符
由于日常使用中存在大量同时使用三元表达式和 isset()的情况, php7添加了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。例如:
$a = $b??0;
//如果当$b为null,则返回0.如果$b不为null,则返回$b;
#标量类型声明
标量类型声明 有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。它们扩充了PHP5中引入的其他类型:类名,接口,数组和 回调类型。例如:
<?php
function a(
?int $a /*参数必须是int或者null*/,
string $b/*参数必须string*/,
Closure $function /*参数必须是匿名函数*/,
array $array/*参数必须是数组*/
){}
类名/接口限定都需要考虑命名空间
#返回值类型声明
PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。例如:
<?php
function a():int{//必须返回int类型,否则报错
return 1;
}
function b():?int{//必须返回int类型或者null类型,否则报错
return 'das';
}
#太空船操作符<=>(组合比较符)
太空船操作符用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1。 比较的原则是沿用 PHP 的常规比较规则进行的。
<?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
PHP7与php5的更多相关文章
- php7和php5区别是什么
PHP7距正式发布以及有挺长时间了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍.那么php7和php5之间的区别是什么?下面本篇文章就来给大家简单介绍一下,希望 ...
- PHP7和PHP5在安全上的区别[更新]
0X01 前言 本篇文章大多为转载,但是修正了一些不正确的说法,对某些功能点的变更指出具体是哪个版本变更,加入了一些小更新. (原文地址:https://www.freebuf.com/article ...
- php7和PHP5对比的新特性和性能优化
1 抽象语法树( AST) 1)在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 token 流: Parsing:语法分析,在 ...
- 从PHP5.0到PHP7.1的性能全评测
本文是最初是来自国外的这篇:PHP Performance Evolution 2016, 感谢高可用架构公众号翻译成了中文版, 此处是转载的高可用架构翻译后的文章从PHP 5到PHP 7性能全评测( ...
- php5共存php7
PHP7与PHP5共存于CentOS7 原文参考 原理 思路很简单:PHP5是通过yum安装的在/usr/,套接字在/var/run/php-fpm.socket,PHP7自己编译装在/usr/loc ...
- PHP特性整合(PHP5.X到PHP7.1.x)
Buid-in web server内置了一个简单的Web服务器 把当前目录作为Root Document只需要这条命令即可: php -S localhost:3300 也可以指定其它路径 php ...
- PHP7的安装
PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就挂 ...
- inux环境PHP7.0安装
inux环境PHP7.0安装 PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导 ...
- PHP7革新与性能优化
有幸参与2015年的PHP技术峰会(PHPCON),听了鸟哥(惠新宸)的关于PHP7的新特性和性能优化的分享,一切都令人感到激动.鸟哥是国内最权威的PHP专家,他的分享有很多非常有价值的东西,我通过整 ...
随机推荐
- 【转】Jquery 使用Ajax获取后台返回的Json数据后,页面处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- centos更换损坏硬盘uuid改变导致系统不能正常启动处理
1.因为挂载磁盘uuid错误导致,而系统在启动的时候,会读取fstab文件.来加载预设的硬盘到指定的分区目录,但读取到需要挂载的UUID的磁盘不存在,中断文件的读取,然后提示文件系统错误,不能解析UU ...
- centos7 启动docker失败
现象:Centos7.3通过yum安装完docker后,启动docker失败 机器的系统版本:CentOS Linux release 7.3.1611 (Core) centos7,执行完安装命令: ...
- 关于RabbitMQ的一些问题总结
消息中间件在工作中一般都不会采用单机模式的,该篇其实是对mq的高可用等等常见问题做一些归纳. 消息队列的高可用 普通集群与镜像集群模式,此处不做深究,另开一篇专门讲述此处 如何保证消息不被重复消费 保 ...
- 西门子S7系列以太网通讯处理器功能介绍
北京华科远创科技有限研发的远创智控型号ETH-YC模块适用于西门子S7-200/S7-300/S7-400.SMART S7-200.西门子数控840D.840DSL.合信.亿维PLC的PPI/MPI ...
- Spring中的注解@
@ResponseBody作用:@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如 ...
- GO学习-(25) Go操作Redis实战
Go操作Redis实战 安装Redis客户端 Go语言中使用第三方库https://github.com/go-redis/redis连接Redis数据库并进行操作.使用以下命令下载并安装: go ...
- windows 映射驱动器 图标显示不正常
正常图标是这样的: 我的变成了这样: 解决方法: 注册表进入: HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\Explorer.exe\Drives\ ...
- Gamma矫正技术
Gamma矫正技术 一. gamma校正背景 在电视和图形监视器中,显像管发生的电子束及其生成的图像亮度并不是随显像管的输入电压线性变化,电子流与输入电压相比是按照指数曲线变化的,输入电压的指数要大于 ...
- Jmeter读取python生成的参数
一.环境准备 1.准备python文件,测试脚本执行结果:下图中的打印的信息即JMeter预期要获取的参数信息 2.准备bat文件 3.添加 OS Process Sampler读取批处理文件 二. ...