第一,PHP7有加入几十个功能,主要是以下内容
1,改进的性能
江湖传说(当然是鸟哥证实过的例子)PHP7比 PHP5快两倍,网上有很多证明例子,可以自行百度。
2,降低内存消耗
PHP7相比已往PHP版本使用了更少的资源
3,标量类型声明
参数和返回值类型可以被强制执行,怎么理解呢,就是现在定义参数前面可以像C语言或者java一样添加数据类型。
比如 function helloworld (int $id){}
4,支持一致性的64位
继续支持64位架构机器
5,改进异常层次结构
异常层次结构得到改善
6,许多致命错误转换成异常
异常的范围增大覆盖为许多致命的错误转化异常
7,安全随机数发生器
加入新的安全随机数生成器API
8,删除已过时的API和扩展
哪些很老旧的和不支持应用程序的扩展被干掉
9,加入新的空合并运算符(??)
它被用来代替三元运算并与 isset()函数功能,结合了三元运算符和isset()函数两者功能。
10,返回和标量类型声明,可以支持返回类型和参数类型。
11,增加了对匿名、匿名类的支持
12,零成本声明,支持零成本加入断言。
13,PHP7引擎升级到Zend Engine 3.0
提高了应用程序性能两倍,比PHP5.6 低了 50% 的内存消耗, 支持更多的用户并发量,无需任何额外的硬件,节省了企业成本。
第二,具体来看更新了哪些内容
1,标量类型声明
有两种选择:
(1),强制 - 强制性是默认模式,不需要指定。
以下几种类型的函数参数可以通过上述方式强制执行:
int,float,bool,string,interfaces,array,callable
实例:
<?php
function sum(int ...$ints){ return array_sum($ints);}
print(sum(2, '3', 4.1));
?>
输出:9
(2),严格 - 严格模式有明确的暗示。
<?php
declare(strict_types=1);
function sum(int ...$ints){return array_sum($ints);}
print(sum(2, '3', 4.1));
?>
输出:9
Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, ...
2,返回类型声明
以下类型返回类型是可以声明的:
int,float,bool,string,interfaces,array,callable
<?php
declare(strict_types=1);
function returnIntValue(int $value): int{return $value;}
print(returnIntValue(5));
?>
3,空合并运算符
如果存在且不是 NULL,空合并运算符返回它的第一个操作数,否则返回第二个操作数。
$_GET['username'] ?$_GET['username'] :$_POST['username'] 被替换为 $_GET['username'] ?? $_POST['username']
4,飞船操作符
它是用于比较两个表达式。当第一个表达式较第二个表达式分别小于,等于或大于时它分别返回-1,0或1。
1 <=> 2
5,常量数组
数组常量现在可以使用 define() 函数定义
define('animals', ['dog','cat','bird'])
6,匿名类
匿名类现在可以使用 new class 来定义,用来代替以前的完整类定义。
$app = new Application;
$app->setLogger(new class implements Logger {public function log(string $msg) {print($msg);}});
7,Closure::call()
Closure::call() 方法加入到临时绑定(bindTo)的对象范围,以简便方式封闭和调用它。
<?php
class A {private $x = 1;}
// PHP 7+ code, Define
$value = function() {return $this->x;};
print($value->call(new A));
?>
输出:1
8, 过滤unserialize()
过滤 unserialize()函数以在反序列化不受信任的数据对象时提供更好的安全性。它可以防止可能的代码注入,使开发人员能够使用序列化白名单类。
9,国际字符
新的 IntlChar 类添加其目的是公开更多的ICU功能,这个类定义了许多可用于操纵Unicode字符的静态方法和常数,你需要在使用这个类之前安装 Intl 扩展。
10,CSPRNG
跨平台的方式加密安全整数和字符串:
random_bytes() - 生成加密安全伪随机字节
random_int() - 生成加密安全伪随机整数
11,期望
assert() 函数
12,use语句
单次使用 use 语句可以用来从同一个命名空间导入类,函数和常量(而不用多次使用 use 语句)。
use com\yiibai\ClassA;
use com\yiibai\ClassB;
use com\yiibai\ClassC as C;
改为
use com\yiibai\{ClassA, ClassB, ClassC as C};
13,错误处理
大多数的错误将通过抛出异常错误处理。类似于异常,这些错误异常会冒泡,直到它们到达第一个匹配的catch块。如果没有匹配的块,那么会使用 set_exception_handler() 安装一个默认的异常处理并被调用,并在情况下,如果没有默认的异常处理程序,那么该异常将被转换为一个致命的错误,并会像传统错误那样处理。
14,intdiv()函数
它执行操作数的整数除法并返回结果为 int 类型
15,Session选项
session_start()函数接受数组参数覆盖在php.ini中设置的会话配置指令。这些选项支持 session.lazy,在默认情况下如果PHP会话数据改变,那么会覆盖任何会话数据信息。
16,弃用的功能
以下功能被弃用:
(1),PHP4风格的构造函数
<?php
class A {function A() {print('Style Constructor');}}
?>
(2),静态调用非静态方法
<?php
class A {function b() {print('Non-static call');}}
A::b();
?>
(3),password_hash()函数的salt选项
(4),capture_session_meta,SSL上下文选项。
17,删除一些扩展
ereg,mssql,mysql,sybase_ct
18,删除一些SAPI
aolserver,apache,apache_hooks,apache2filter,caudium,continuity,isapi,milter,nsapi
引用相关文章链接:https://www.yiibai.com/php7
网友评论