1 不支持同名的构造函数;
以静态的方式调用非静态方法(实例方法不能用静态方法的方式调用)
静态函数里面不再支持通过一个不兼容的$this调用一个非静态的函数
2 PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式:
declare(strict_types=1); 1 表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。
3 支持声明函数参数类型(PHP5不支持)
支持声明方法或函数返回类型
4 // PHP 7+ 之后版本可以使用一个 use 导入同一个 namespace 的多个类
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
5 移除扩展 ereg mssql mysql, mcrypt
6 变量处理机制修改
对变量、属性和方法的间接调用现在将严格遵循从左到右的顺序来解析,而不是之前的混杂着几个特殊案例的情况。 下面这张表说明了这个解析顺序的变化。
$$foo['bar'] php5: ${$foo['bar']} php7: ($$foo)['bar']
$foo->$baz['bar'] php5: $foo->{$baz['bar']} php7: ($foo->$baz)['bar']
7 <=> 语法:$c = $a <=> $b (1; =0;<-1)
?? $username = $_GET['user'] ?? 'nobody';
echo 2 ** 3;//8
foreach()循环对数组内部指针不再起作用
$HTTP_RAW_POST_DATA 变量被移除, 使用php://input来代
list($arr[], $arr[], $arr[]) = [1,2,3];//$arr将会是[1,2,3]而不是之前的[3,2,1]
在 PHP 7.1.0 之前的版本,list() 仅能用于数字索引的数组,并假定数字索引从 0 开始
list()不再支持字符串拆分功能 list($x, $y) = $string; list()现在也适用于数组对象
each()从 PHP 7.2.0起不再支持
8 php7本移除了以下 SAPI:
aolserver
apache
apache_hooks
apache2filter
caudium
continuity
isapi
milter
nsapi
phttpd
pi3web
roxen
thttpd
tux
webjames