php7新特性4
2021-04-06 13:49:40 来源:admin 点击:741
整数部分
PHP 7引入了一个新的函数intdiv(),它对它的操作数进行整数除法,并将除法运算返回为int。
<?php
$value = intdiv(10,3);
var_dump($value);
print(" ");
print($value);
//output
int(3)
3
?>
会话选项
session_start()函数接受来自PHP7 + 的一系列选项来覆盖php.ini中设置的会话配置指令。这些选项支持session.lazy_write,默认情况下,它会导致PHP在会话数据发生更改时覆盖任何会话文件。
添加的另一个选项是read_and_close,它表示应该读取会话数据,然后应该立即关闭会话。例如,将session.cache_limiter设置为private,并使用以下代码片段将标志设置为在读取完毕后立即关闭会话。
<?php
session_start([
'cache_limiter' => 'private',
'read_and_close' => true,
]);
?>
弃用
PHP 4样式构造函数是与它们定义的类具有相同名称的方法,现在已被弃用,并且将来将被删除。如果PHP 4的构造函数是类中定义的唯一构造函数,则PHP 7将发出E_DEPRECATED。实现__construct()方法的类不受影响。
<?php
class A {
function A() {
print('Style Constructor');
}
}
?>
对非静态方法的静态调用已被弃用,并可能在将来被删除
<?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选项已被弃用,所以开发人员不会生成自己的(通常是不安全的)盐。当开发人员不提供盐时,函数本身会生成密码安全的盐,因此不再需要定制盐的生成。
该capture_session_meta
SSL上下文选项已被弃用。SSL元数据现在通过stream_get_meta_data()函数使用。
错误处理
从PHP 7开始,错误处理和报告已经改变。而不是通过PHP 5使用的传统错误报告机制来报告错误,现在大多数错误都是通过抛出错误异常来处理的。与异常类似,这些错误异常会一直冒泡,直到它们到达第一个匹配的catch块。
如果没有匹配的块,则使用set_exception_handler()安装的默认异常处理程序将被调用。如果没有默认的异常处理程序,那么异常将被转换为致命错误,并将像传统的错误一样处理。
由于错误层次结构不是从Exception扩展的,所以使用catch(Exception $ e){…}块来处理PHP 5中未捕获的异常的代码将不会处理这样的错误。catch(Error $ e){…}块或set_exception_handler()处理程序是处理致命错误所必需的。
<?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());
// output
Modulo by zero
?>