PHP7 新特性,之前整理的

一、null合并运算符

常用到三元表达式某个值是否存在,存在就赋该值,不存在就赋默认值。
NULL 合并运算符使得变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。
//原来使用
$a = isset($_GET['mid']) ? $_GET['mid'] : 0;
//PHP7新特性
$b = $_GET['mid'] ?? 0;

二、define常量数组

PHP7之前,define常量的值仅允许标量和 null。标量的类型是 integer, float,string 或者 boolean。所以数组是不允许的
//之前要定义数组的方法,只能通过序列化和反序列化
$config = array('localhost', '127.0.0.1', 'user', 'pwd');
$seri = serialize($config); //或者是 json_encode($config);
define('DB_CONFIG', $seri);
//PHP7之后
define('CONFIG', $config);

三、加入整除

$a = intdiv(100, 3);
得到 $a = 33;

四、简化use使用

可以一次性引入同一namespace的类、函数、常量
//  PHP 7 之前用法
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;
use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;
//PHP7之后
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};

五、太空船操作符(组合比较)

比较左右两个表达式,当左边小于、等于、大于右边的时候,分别返回的是-1 、0 、1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "c" <=> "a"; // 1
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

六、增加返回值类型声明

增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型。
可以声明的返回类型有:
int float bool string interfaces array callable
function getResult($input): int
{
    return $input;
}
echo getResult(100.338);
返回 100

七、废弃了一些扩展

ereg mssql mysql sybase_ct

八、废弃的特性

在 PHP4 中类中的函数可以与类名同名,这一特性在 PHP7 中被废弃,同时会发出一个 E_DEPRECATED 错误。当方法名与类名相同,且类不在命名空间中,同时PHP5的构造函数(__construct)不存在时,会产生一个 E_DEPRECATED 错误。
class A {
    function A() {
        print('hello');
    }
}
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 D:\testcode\test1.php on line 10

请我喝杯咖啡吧~

支付宝
微信