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专家,他的分享有很多非常有价值的东西,我通过整 ...
 
随机推荐
- MarkDown笔记二
			
表格 列1|列2|列3 --|--|-- 内容1|内容2|内容3 下例冒号在左为左对齐(默认),在右为右对齐,在俩侧为居中对齐 | 左对齐 | 右对齐 | 居中对齐 | | :-----| ----: ...
 - unity用json和服务器数据交互
			
第一种类型:服务器json数据是个对象 /// <summary> /// 获取用户信息初始化信息 /// </summary> void InitUserMessage() ...
 - python 解析html网页
			
pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,使用方法: 代码如下: from pyquery import PyQuery as pq 1.可加载一段HTML字符串 ...
 - 【补档STM32】STM32F103俄罗斯方块游戏实现
			
项目地址:https://gitee.com/daycen/stm32-tetris/tree/master 使用Keil uVision5打开即可 一.概述  本文介绍了一个基于STM32的俄罗斯 ...
 - CF1513F Swapping Problem(模型转化)
			
题目描述 You are given 2 arrays a a a and b b b , both of size n n n . You can swap two elements in b b ...
 - [leetcode] 875. 爱吃香蕉的珂珂(周赛)
			
875. 爱吃香蕉的珂珂 这题时间要求比较严格... 首先,将piles排序,然后二分查找. 总之,答案K肯定位于piles[?]piles[?+1]或者1piles[0]之间 所以我们先二分把?找到 ...
 - 用户自定义协议client/server代码示例
			
用户自定义协议client/server代码示例 代码参考链接:https://github.com/sogou/workflow message.h message.cc server.cc cli ...
 - 看懂redis配置文件
			
看懂redis 配置文件: https://blog.csdn.net/liqingtx/article/details/60330555 redis 数据库缓存双写一致性解决方案: https:// ...
 - TKE 体验升级:更快上手 K8s 的24个小技巧
			
作者 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务. 背景 "功能"解决是产品有或者没有一个能力的问题,有了" ...
 - OpenResty高并发
			
在电商项目中所有的访问都是通过首页访问进去的,那么首页门户的访问频率会是非常高的,用我们专业术语来说就是并发量高,这时问题就来了,并发量高我们在做程序时就要保证首页的抗压能力强,而且还要保证抗压的同时 ...