更新时间:2022-01-09 19:19:28
我将告诉你php7和PHP5比较的新特性和性能优化。相信朋友们也应该密切关注这个话题。现在,我将告诉您php7和PHP5之间比较的新特性和性能优化。边肖还收集了关于php7和PHP5之间比较的新特性和性能优化的相关信息。我希望你看到后会喜欢。
php7和PHP5比较的新特性和性能优化
1.抽象语法树
在ASTPHP编译过程中,将解析器和编译器解耦为中间件,而不是直接从解释器中剥离操作码,可以减少一些Hack代码,使实现更容易理解和维护。
推荐(免费):PHP7
2.Natice TLS:
线程共享安全性打开数据共享内存空间的全局线程。
3.指定参数返回值类型
4.Zval结构的变化
5.异常处理
PHP的尝试.捕捉.最后无法处理传统错误。如果有必要,你通常会考虑使用set_error_handler来Hack。但是,仍然有许多错误类型不能被set_error_handler捕获。
PHP 7引入的Throwable接口的错误和异常已经意识到Throwable不能直接实现Throwable,而是可以扩展\Exception和\Error类。您可以使用Throwable捕捉异常和错误。\Exception是所有PHP和用户异常的基类;\Error是所有内部PHP错误的基类。
6.参数分析的新方法
7.哈希表更改
Buckets和Zvals不再单独分配内存,消除了许多无用的冗余。
8.空联合运算符(空联合运算符)
上面的直接例子:
$name=$name?NoName ';//如果$name有值,取其值;否则,将$name设置为‘NoName’9和航天器运算符(组合比较运算符)。
形式:(expr)=(expr)
如果左操作数很小,则返回-1;如果左右操作数相等,则返回0;如果左操作数很大,则返回1。
$name=['Simen ',' Suzy ',' Cook ',' Stella '];
usort($name),function ($left,$ right){ 0
return $ left=$ right
});
print _ r($ name);10、常数数组(常数数组)
在PHP 7之前,类/接口中只允许常量数组。现在PHP 7也支持没有类/接口的普通常量数组。
定义(' USER ',[
' name'='Simen ',
性别'='男性',
年龄'='38 ',
技能'=['PHP ',' MySQL ',' C']
]);
//USER['技能'][2]=' C/C ';//PHP致命错误:无法在中的写上下文中使用临时表达式.11、统一变量语法。
$goo=[
条'=[
baz'=100,
' cug'=900
]
];
$ foo=' goo
$ $ foo[' bar '][' baz '];//实际上:($ $ foo)[' bar '][' baz '];在PHP 5中:$ { $ foo[' bar '][' baz ']};
PHP 7中一个通用的决策规则是从左到右的组合。12.可投掷界面
这是PHP 7有望引入的新特性,将大大增强PHP的错误处理能力。PHP的尝试.捕捉.最后无法处理传统错误。如果有必要,你通常会考虑使用set_error_handler来Hack。然而,set_erro的错误类型仍然很多。
r_handler 捕捉不到的。PHP 7引入 Throwable 接口错误及异常都实现了 Throwable无法直接实现 Throwable但可以扩展 \Exception 和 \Error 类。可以用 Throwable 捕捉异常跟错误。\Exception 是所有PHP及用户异常的基类;\Error 是所有内部PHP错误的基类。$name = "Tony"; try { $name = $name->method; } catch (\Error $e) { echo "出错消息 --- ", $e->getMessage, PHP_EOL; } try { $name = $name->method; } catch (\Throwable $e) { echo "出错消息 --- ", $e->getMessage, PHP_EOL; } try { intp(5, 0); } catch (\pisionByZeroError $e) { echo "出错消息 --- ", $e->getMessage, PHP_EOL; }13、use 组合声明
use 组合声明可以减少 use 的输入冗余。
use PHPGoodTaste\Utils\{ Util, Form, Form\Validation, Form\Binding };14、一次捕捉多种类型的异常 / 错误
PHP 7.1 新添加了捕获多种异常/错误类型的语法——通过竖杠“|”来实现。
try { throw new LengthException("LengthException"); // throw new pisionByZeroError("pisionByZeroError"); // throw new Exception("Exception"); } catch (\pisionByZeroError | \LengthException $e) { echo "出错消息 --- ", $e->getMessage, PHP_EOL; } catch (\Exception $e) { echo "出错消息 --- ", $e->getMessage, PHP_EOL; } finally { // ... }15、可见性修饰符的变化
PHP 7.1 之前的类常量是不允许添加可见性修饰符的此时类常量可见性相当于 public。PHP 7.1 为类常量添加了可见性修饰符支持特性。总的来说可见性修饰符使用范围如下所示:
函数/方法:public、private、protected、abstract、final类:abstract、final属性/变量:public、private、protected类常量:public、private、protectedclass YourClass { const THE_OLD_STYLE_CONST = "One"; public const THE_PUBLIC_CONST = "Two"; private const THE_PRIVATE_CONST = "Three"; protected const THE_PROTECTED_CONST = "Four"; }iterable 伪类型
PHP 7.1 引入了 iterable 伪类型。iterable 类型适用于数组、生成器以及实现了 Traversable 的对象它是 PHP 中保留类名。
$fn = function (iterable $it) : iterable { $result = []; foreach ($it as $value) { $result[] = $value + 1000; } return $result; }; $fn([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);可空类型(Nullable Type)
PHP 7.1 引入了可空类型。看看新兴的 Kotlin 编程语言的一个噱头特性就是可空类型。PHP 越来越像“强类型语言了”。对于同一类型的强制要求可以设置其是否可空。
$fn = function (?int $in) { return $in ?? "NULL"; }; $fn(null); $fn(5); $fn; // TypeError: Too few arguments to function {closure}, 0 passed in ...Void 返回类型
PHP 7.1 引入了 Void 返回类型。
function first: void { // ... } function second: void { // ... return; }以上就是介绍php7和PHP5对比的新特性和性能优化的详细内容!
来源:php中文网