您的位置:快乐家园 > PHP开发 > 文章内容
PHP7 新特性  
添加时间:2021-08-29

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