当前位置: 首页 > news >正文

PHP 7 修改了什么呢 -- 2

PHP7 - use语句

从PHP7起,单次使用 use 语句可以用来从同一个命名空间导入类,函数和常量(而不用多次使用 use 语句)。
示例

<?php
// Before PHP 7
use comyiibaiClassA;
use comyiibaiClassB;
use comyiibaiClassC as C;

use function comyiibaifn_a;
use function comyiibaifn_b;
use function comyiibaifn_c;

use const comyiibaiConstA;
use const comyiibaiConstB;
use const comyiibaiConstC;

// PHP 7+ code
use comyiibai{ClassA, ClassB, ClassC as C};
use function comyiibai{fn_a, fn_b, fn_c};
use const comyiibai{ConstA, ConstB, ConstC};

?>

PHP7 - 错误处理

从PHP7,错误处理和报告已经改变。PHP5中使用了传统的错误报告机制的错误,现在大多数的错误将通过抛出异常错误处理。类似于异常,这些错误异常会冒泡,直到它们到达第一个匹配的catch块。如果没有匹配的块,那么会使用 set_exception_handler() 安装一个默认的异常处理并被调用,并在情况下,如果没有默认的异常处理程序,那么该异常将被转换为一个致命的错误,并会像传统错误那样处理。

由于 Error 层次结构不是从异常(Exception),代码扩展使用catch (Exception $e) { ... } 块来处理未捕获的异常,PHP5中将不会处理这样的错误。 catch (Error $e) { ... } 块或 set_exception_handler()处理程序需要处理的致命错误。
Exception Hiearchy
示例

<?php
class MathOperations
{
protected $n = 10;

// Try to get the Division by Zero error object and display as Exception
public function doOperation(): string
{

  try {
     $value = $this->n % 0;
     return $value;
  } catch (DivisionByZeroError $e) {
     return $e->getMessage();
  }

}
}

$mathOperationsObj = new MathOperations();
print($mathOperationsObj->doOperation());
?>

浏览器中将产生以下输出-

Modulo by zero

PHP7 - 整数除法

PHP7引入了intdiv()的新函数,它执行操作数的整数除法并返回结果为 int 类型。
示例

<?php
$value = intdiv(10,3);
var_dump($value);
print("
");
print($value);
?>

这将在浏览器产生以下输出 -

int(3)
3

PHP7 - Session选项

从PHP7+,session_start()函数接受数组参数覆盖在php.ini中设置的会话配置指令。这些选项支持 session.lazy,在默认情况下如果PHP会话数据改变,那么会覆盖任何会话数据信息。
添加另一种选择是:read_and_close,这表明会话数据应被读取,然后该会话应当立即被关闭不变。例如,session.cache_limiter 设置为私有,并设置标志使用下面的代码片段之后立即关闭会话。

<?php
session_start([
'cache_limiter' => 'private',
'read_and_close' => true,
]);
?>

PHP7 - 弃用的功能

以下功能已被取消,可能会在PHP的未来版本中删除。
PHP4风格的构造函数

PHP4式构造函数,它与类的名称相同,因为它们是在所定义类的方法,现在已过时,并且将在未来被移除。如果PHP4的构造仅仅是一个类中定义构造函数,PHP7将发出E_DEPRECATED。类实现构造函数 __construct()方法不受影响。
示例

<?php
class A {
function A() {

  print('Style Constructor');

}
}
?>

这将在浏览器产生以下输出 -

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in...

静态调用非静态方法
非静态方法静态调用已被弃用,并且可能在将来被移除。
示例

<?php
class A {
function b() {

  print('Non-static call');

}
}
A::b();
?>

这将在浏览器产生以下输出 -

Deprecated: Non-static method A::b() should not be called statically in...
Non-static call

password_hash() salt 选项

password_hash()函数的salt选项已被弃用,使开发人员不会产生他们自己的(通常是不安全的)salt。函数本身生成一个加密的安全salt,在开发者没有提供salt值时 - 因此,定制 salt 生成不再需要了。
capture_session_meta SSL上下文选项
capture_session_meta SSL上下文选项已被弃用。 SSL元数据现在通过stream_get_meta_data()函数获取。
PHP7已删除的扩展
以下扩展名从PHP7起删除

ereg

mssql

mysql

sybase_ct

PHP7已删除的SAPI
以下SAPI从PHP7起删除

aolserver

apache

apache_hooks

apache2filter

caudium

continuity

isapi

milter

nsapi

相关文章:

  • Visual stuido 项目路径的奇怪问题
  • 京东推荐系统中的机器学习与大规模线上实验
  • JavaScript设计模式系列一:工厂模式
  • Swift 计算文本的size
  • 73.node.js开发错误——TypeError: Cannot set property 'XXX' of undefined
  • ubuntu安装wxpython库
  • golang学习笔记(1):安装helloworld
  • 第 9 章 Spring Security
  • 一个字符串转换类
  • Ubuntu 16.04 LTS国内快速更新源
  • 考过网工的心得
  • 8.3. Spring Cloud 相关的 application.properties 配置
  • 大数据与云计算学习:数据分析(二)
  • 3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令
  • 剑指offer 矩阵覆盖
  • co模块的前端实现
  • JavaScript的使用你知道几种?(上)
  • js数组之filter
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • spring + angular 实现导出excel
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 反思总结然后整装待发
  • 判断客户端类型,Android,iOS,PC
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 设计模式走一遍---观察者模式
  • 使用parted解决大于2T的磁盘分区
  • 算法-插入排序
  • 译有关态射的一切
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 阿里云ACE认证之理解CDN技术
  • ​ubuntu下安装kvm虚拟机
  • ​如何在iOS手机上查看应用日志
  • ###C语言程序设计-----C语言学习(3)#
  • #pragma once与条件编译
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (function(){})()的分步解析
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (六)Hibernate的二级缓存
  • (篇九)MySQL常用内置函数
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Linq学习笔记
  • (轉貼) UML中文FAQ (OO) (UML)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .bat文件调用java类的main方法
  • .htaccess配置常用技巧
  • .NET Core 通过 Ef Core 操作 Mysql