不向后兼容的变更
 
  当传递参数过少时将抛出错误
  
   在过去如果我们调用一个用户定义的函数时,提供的参数不足,那么将会产生警告(warning)。现在,这个警告被提升为错误异常(Error
   exception)。这个变更仅对用户定义的函数生效,并不包含内置函数。例如:
  
  
  
 
  禁止动态调用作用域内的内省(introspection)函数
  
   禁止动态调用($func() 或 array_map('extract', ...)
   的形式等)某些函数。这些函数会检查或修改另一个作用域,并呈现出不明确且不可靠的行为。函数如下:
  
  
  
  
 
  无效的 class、interface 和 trait 名称
  
   下列名称不能用于 class、interfaces 或 traits 名:
  
  
  
 
 
 
 
  禁止在标识符中使用 ASCII 删除控制字符
  
   ASCII 删除控制字符(0x7F)不能用于未加引号的标识符中。
  
  
 
  
   error_log 更改为 syslog 值
  
  
   如果 error_log ini 设置为 syslog,PHP 错误等级会映射到 syslog
   错误级别。这在错误日志中带来了更好的区分,与之前相反,之前所有的错误只记录了错误级别。
  
  
 
  在不完整的对象上不再调用析构方法
  
   对于在执行构造方法时抛出异常的对象,现在析构方法绝不会被调用。在先前的版本中,这个行为取决于对象是否在构造方法以外的地方呗引用(例如一个错误堆栈回溯)
  
  
 
 
  
   字符串不再支持空索引操作符
  
  
   对字符串使用一个空索引操作符(例如$str[] = $x)将会抛出一个致命错误,而不是静默地将其转为一个数组。
  
  
 
  ini 配置项移除
  
   下列 ini 配置项已经被移除:
  
  
   - 
    
     session.entropy_file
- 
    
     session.entropy_length
- 
    
     session.hash_function
- 
    
     session.hash_bits_per_character
 
 
  
   在引用赋值期间自动创建元素时的数组排序已更改
  
  
   当通过引用赋值自动创建这些元素时,数组中元素的顺序就会发生变化。例如:
  
  
  
 
  相等元素的排序顺序
  
   内部排序算法已得到改进,这可能会导致元素比较相等的排序顺序与以前不同。
  
  注意: 
   
    不要依赖比较相等的元素的顺序;它可能随时改变。
   
  
  
 
  E_RECOVERABLE 错误的错误消息
  
   E_RECOVERABLE 错误的错误消息已从“可捕获的致命错误”更改为“可恢复的致命错误”。
  
  
 
 
 
 
  词法绑定变量不能重用名字
  
   通过 use 构造绑定到 closure
   的变量不能使用与任何 superglobals、$this 或任何参数相同的名称。例如,所有这些函数定义都会导致致命错误:
   
  
  
 
 
 
 
  放弃对 sslv2 stream 的支持
  
   sslv2 stream 现已在 OpenSSL 中删除。
  
  
 
  在编译时禁止 "return;" 用于类型化返回
  
   在声明返回类型的函数中,没有参数的 return 语句现在触发 E_COMPILE_ERROR(除非返回类型声明为
   void),即使永远不会到达 return 语句。