php5与php7的区别点总结
为什么 PHP7 比 PHP5 性能提升了?
1、变量存储字节减小,减少内存占用,提升变量操作速度
2、改善数组结构,数组元素和hash映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率
3、改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率
php5与php7之间的区别
1、性能提升:PHP7比PHP5.0性能提升了两倍。
2、以前的许多致命错误,现在改成抛出异常。
3、PHP 7.0比PHP5.0移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。
4、PHP 7.0比PHP5.0新增了空接合操作符。
5、PHP 7.0比PHP5.0新增加了结合比较运算符。
6、PHP 7.0比PHP5.0新增加了函数的返回类型声明。
7、PHP 7.0比PHP5.0新增加了标量类型声明。
8、PHP 7.0比PHP5.0新增加匿名类。
9、错误处理和64位支持,PHP7.0全面一致支持64位。
如果您了解错误和异常之间的区别,那么您就会知道在PHP 5中处理致命错误非常不容易。PHP7简化了流程,因为它已用可以轻松处理的异常替换了几个主要错误。这是通过引入新的引擎异常对象实现的。
您可能已经知道,PHP 5不支持64位整数或大文件,但PHP 7中的情况已发生变化。PHP7具有64位支持,因此您也可以使用本机64位整数作为大文件,因此,您可以在64位系统体系结构上完美运行应用程序。
10、声明返回类型
在PHP 5中,程序员无法定义函数或方法的返回类型。在现实生活中,这是一个巨大的缺点,因为程序员无法防止意外的返回类型并在其他情况下生成异常。
幸运的是,PHP 7允许程序员根据期望的返回值声明函数的返回类型。这肯定会使代码健壮和准确。有四种不同的返回类型可用-bool,int,string和float。
PHP标量类型
#主要分为两种模式,强制性模式和严格模式 declare(strict_types=1) #1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。
返回类型声明
PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。
<?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
NULL合并运算符
如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。
$site = isset($_GET['site']) ? $_GET['site'] : 'wo'; #简写成 $site = $_GET['site'] ??'wo';
太空船操作符(组合比较符)
太空船操作符用于比较两个表达式。当a小于、等于或大于b时它分别返回-1、0或1
<?php // 整数 echo 1 <= 1; // 0 echo 1 <= 2; // -1 echo 2 <= 1; // 1 // 浮点数 echo 1.5 <= 1.5; // 0 echo 1.5 <= 2.5; // -1 echo 2.5 <= 1.5; // 1 // 字符串 echo "a" <= "a"; // 0 echo "a" <= "b"; // -1 echo "b" <= "a"; // 1 ?
通过 define() 定义常量数组
<?php define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // 输出 "cat" ?
使用define()定义常量
<?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." ?
使用关键字 const 定义常量
<?php const CONSTANT = 'Hello World'; echo CONSTANT; ?
匿名类
PHP7 支持持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义。
<?php 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; $app- setLogger(new class implements Logger { public function log(string $msg) { echo $msg; } }); var_dump($app- getLogger()); ?
输出:
object(class@anonymous)#2 (0) { }