php7新特性

类型声明:

函数入参和出参支持声明类型:
declare(strict_types=1); // 严格限制入参类型
function test(int $num) : int 
{
    return $num * $num;
}
var_dump(test('66'));  //这个会报错

strict_types/declare()指令
默认情况下,所有的PHP文件都处于弱类型校验模式。新的declare指令,通过指定strict_types的值(1或者0),1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。
declare(strict_types=1)必须是文件的第一个语句。如果这个语句出现在文件的其他地方,将会产生一个编译错误,块模式是被明确禁止的。
类似于encoding指令,但不同于ticks指令,strict_types指令只影响指定使用的文件,不会影响被它包含(通过include等方式)进来的其他文件。该指令在运行时编译,不能修改。它的运作方式,是在opcode中设置一个标志位,让函数调用和返回类型检查符合类型约束。

命名空间批量声明
use Publish\{
    Book\Paper,
    Course\Name,
    Users\Sex
}
老式构造方法废弃

使用与类名同名的函数作为构造函数这种方式不推荐使用,将会在未来版本中移除。

Throwable接口

异常(Exception)和绝大部分错误(Fatal)都能通过 try/catch 的方式予以捕获并处理(继承自 Throwable 接口):

try {
    $a = 20;
    $result = $a / 0;
} catch (EngineException $e) {
    echo $e->getMessage();
}

新的操作符

<=>

用于对参数进行比较时很方便:
两边相等返回0
左边小于右边返回-1
左边大于右边返回1

??
//三元运算符的优化,以前需要这么写:
$name = isset($_POST['name']) ? $_POST['name'] : NULL;
//现在可以这么写:
$name = $_POST['name'] ?? NULL;
统一变量语法
/*为了解决 $$first['name'] 这种写法容易造成语法混淆,引入统一变量语法,这种写法需要改为:*/

${$first['name']}

//即将优先执行的部分用花括号括起来,否则会报错,并且得到不确定的输出。

其它新特性

常量数组
define('com', ['google', 'baidu', '360']);
print(com[1]);
switch不再支持多个默认值
switch(true)
{
    default:
        echo '1';
        break;
    default:
        echo '2';    
}

以上代码在 PHP 7 中会报错:

Fatal error: Switch statements may only contain one default …

session_start函数调整

支持传递配置参数以覆盖 php.ini 中的默认配置。

unserialize引入过滤器

为了安全起见,在该函数中引入过滤器,以限定可以反序列化的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值