博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 7 修改了什么呢 -- 2
阅读量:6188 次
发布时间:2019-06-21

本文共 2751 字,大约阅读时间需要 9 分钟。

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起删除

eregmssqlmysqlsybase_ct

PHP7已删除的SAPI

以下SAPI从PHP7起删除

aolserverapacheapache_hooksapache2filtercaudiumcontinuityisapimilternsapi

转载地址:http://sroda.baihongyu.com/

你可能感兴趣的文章
jquery.autocomplete 模糊查询 支持分组
查看>>
找到系统盘被打满文件
查看>>
http接口测试工具,cookie自动追加
查看>>
基于OpenCv和swing的图片/视频展示Java实现
查看>>
阿里数据库内核月报:2017年03月
查看>>
SpringBoot系列——WebMvcConfigurer介绍
查看>>
monkey自动化测试(日志分析)
查看>>
sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]
查看>>
Sql Server 附加指定路径的数据库文件语句
查看>>
20145237 实验一 逆向与Bof基础
查看>>
C语言第二次博客作业—分支结构
查看>>
P3349 [ZJOI2016]小星星
查看>>
CF17E Palisection(回文自动机)
查看>>
洛谷P4197 Peaks&&克鲁斯卡尔重构树学习笔记(克鲁斯卡尔重构树+主席树)
查看>>
43. Multiply Strings字符串相乘
查看>>
JavaScript数据类型
查看>>
UGUI组件之 Anchors 锚点定位(九宫定位 and 弹性定位)简单笔记
查看>>
监控HTTP(1)
查看>>
JavaScript函数继承与伪类继承
查看>>
NGUI的输入框制作(attach- input filed script的使用)
查看>>