2018-07-14 11:24 php实例 1054 梁俊威
(一)性能提升:PHP7比PHP5.0性能提升了两倍。
为什么 PHP7 比 PHP5 性能提升了?
变量存储字节减小,减少内存占用,提升变量操作速度
改善数组结构,数组元素和hash映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率
改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率
(二)php标量类型和返回类型声明
先说说返回类型声明,在PHP 5中,程序员无法定义函数或方法的返回类型。在现实生活中,这是一个巨大的缺点,因为程序员无法防止意外的返回类型并在其他情况下生成异常。
幸运的是,PHP 7允许程序员根据期望的返回值声明函数的返回类型。这肯定会使代码健壮和准确。有四种不同的返回类型可用-bool,int,string和float。
使用示例:
function test1():int{} function test2():bool{} function test3():string{} function test4():float{}
返回值也有两种模式,也就是我们说的标量类型。PHP中申明 declare(strict_types=1)的作用:
strict_types=1 及开启严格模式。默认是弱类型校验;具体严格模式和普通模式的区别见下面代码。
例1:
declare(strict_types=1);// 开启严格模式 function foo():int{ return 1.11; } echo foo();
例2:
//declare(strict_types=1);// 默认弱类型校验 function foo():int{ return 1.11; } echo foo();
运行结果分别为:
例1:抛出语法错误(注意:declare 是会校验这个文件下所有使用的的函数,不管他是否是在declare指令文件中申明的!)
例2:返回值为1(这里是由于php7新特性决定的);
(三)以前的许多致命错误,现在改成抛出异常。
(四)移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。
如:mssql、mysql、sybase_ct、errg等
(五)新增了NULL合并运算符
$site = isset($_GET['site']) ? $_GET['site'] : 'wo'; // 可以写成 $site = $_GET['site'] ??'wo';
(六)新增加了结合比较运算符。
// 整型比较 print( 1 <=> 1);print(PHP_EOL); print( 1 <=> 2);print(PHP_EOL); print( 2 <=> 1);print(PHP_EOL); print(PHP_EOL); // PHP_EOL 为换行符
(七)新增加匿名类。
interface Logger { public function log(string $msg); } class Application { private $logger; public function getLogger(): Logger { return $this->logger; } public function setLogger(Logger $logger) { $this->logger = $logger; } } $app = new Application; // 使用 new class 创建匿名类 $app->setLogger(new class implements Logger { public function log(string $msg) { print($msg); } }); $app->getLogger()->log("我的第一条日志");
(八)错误处理和64位支持
如果您了解错误和异常之间的区别,那么您就会知道在PHP 5中处理致命错误非常不容易。PHP7简化了流程,因为它已用可以轻松处理的异常替换了几个主要错误。这是通过引入新的引擎异常对象实现的。
您可能已经知道,PHP 5不支持64位整数或大文件,但PHP 7中的情况已发生变化。PHP7具有64位支持,因此您也可以使用本机64位整数作为大文件,因此,您可以在64位系统体系结构上完美运行应用程序。
若无特殊说明,本站点所有内容均为原创,转载请说明出处!