php5与php7之间的区别

2018-07-14 11:24 php实例 1036 梁俊威

(一)性能提升: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位系统体系结构上完美运行应用程序。

若无特殊说明,本站点所有内容均为原创,转载请说明出处!

原文链接:https://www.ljwei.com.cn/read/17.html

QQ客服

QQ客服

微信客服

微信客服

微信客服二维码
意见反馈

意见反馈

一键置顶