php 7.1.1,PHP7.1的几个新特性

本文介绍了PHP7.1的一些重要更新,包括支持捕获多个异常的语法糖,类常量的可见性设置,多变量同时赋值的优化,以及弃用mcrypt扩展并转向openssl进行加密解密操作。这些改变提高了代码的可读性和安全性。

1、try catch 支持捕获多个异常

#写代码的时候不免要自定义异常,以前捕获多个异常需要这样写

try{

...

}catch(myException $e) {

...

}catch(anotherExcpetion $e) {

...

}catch(Exception $e) {

...

}

#php7.1可以这么写了

try{

...

}catch(myException | anotherException $e) {

...

}catch(Exception $e) {

...

}

1、class 支持常量的可见性设置

#以前的类里面的常量不可以设置可见性,例如

class MyClass

{

protected $orderArr;

private $key;

const OUT_TIME = 1000; #这里不能添加修饰

}

#现在你可以为const设置可见性了

class MyClass

{

public $name

protecte $orderArr;

private $key;

protected const OUT_TIME = 1000; #这里可以设置可见性了

}

3、多变量同时赋值

#以前多个变量赋值你可以这样写

$a = 1;

$b = 2;

$c = 4;

#或者相同值的你可以这样写

$a = $b = $c = [];

#现在你可以这样为不同值的多个变量赋值

[$a, $b, $c] = [1, 2, 3];

4、放弃mcrypt扩展

#以前用mcrypt写一个加密大概是这样

public function encryptData($str, $key)

{

$block = mcrypt_get_block_size('des', 'ecb');

$pad = $block - (strlen($str) % $block);

$str .= str_repeat(chr($pad), $pad);

$res = mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

return strtoupper(bin2hex($res));

}

#现在你需要用openssl来替换了

public function encryptData($str, $key)

{

$res = openssl_encrypt($str, 'DES-ECB', $key, OPENSSL_RAW_DATA);

return strtoupper(bin2hex($res));

}

#以前用mcrypt写一个解密大概是这样

public function decryptData($str, $key)

{

$str = strtolower($str);

$str = pack('H*', $str);

$decrypted = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

$dec_s = strlen($decrypted);

$padding = ord($decrypted[$dec_s - 1]);

$decrypted = substr($decrypted, 0, -$padding);

return $decrypted;

}

#现在也要用openssl替换了

public function decryptData($str, $key)

{

$str = strtolower($str);

$str = pack('H*', $str);

$decrypted = openssl_decrypt($str,'DES-ECB', $key,OPENSSL_RAW_DATA);

return $decrypted;

}

5、算术运算中警告无效的字符串

# 以前可以这样

$num = 1 + 'abc323vccc'; //result 1;

$num = 1 +'100abc'; //result 101;

#现在你不能那样写了,将会得到这样的一个警告

PHP warning: A non-numeric value encountered on line 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值