• 0
  • 0

PHP新特性用法

2020-09-16 688 0 admin 所属分类:PHP 记录

类型声明

PJP7新增特性,可以作用于函数(方法)返回值类型 (php7特性)、也可以限制函数(方法)的形参类型(php5特性),不满足条件将会报Fatal错误

可用限定类型有 int float bool array object

如要强制性约束类型,可在文件头部添加declare声明

declare(strict_types = 1);
//限定形参
function study(int $get)
{
    return $get;
}

var_dump(study('ddd'));
//限定返回类型
function authorize(): bool 
{
    return true;
}


代码复用 trait

自身无法实例化,减少单继承语言的限制

优先级 从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法

在 use 声明中引入多个 trait,用逗号分隔,插入到一个类中。

 trait 可以用  多个 trait组合起来 同class引入

支持抽象方法的使用

支持静态成员的使用

支持静态方法的使用    

Trait 定义了一个属性后,类就不能定义同样名称的属性,否则会产生 fatal error

冲突的解决

//相同方法名处理冲突  指定替代
 use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
}
//保留冲突的方法名 用别名替代
use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
}

修改方法的访问控制

use HelloWorld { sayHello as protected; }

 给方法一个改变了访问控制的别名,原方法 的访问控制不改变

use HelloWorld { sayHello as private myPrivateHello; }

数组和字符串直接表达式 PHP7

echo "hello world"[4];

异常处理语句由原来的 try-catch 新增了一个 finally语句块 PHP7 ,php7.0以后,PHP是不支持捕获错误,只能捕获异常

try {
    #expression
} catch (Error $e) {
    $msg = "错误:" . $e->getMessage();
} catch (Exception $e) {
    $msg = "异常:" . $e->getMessage();
} finally {
    file_put_contents('error.log', $msg, FILE_APPEND);
}

幂运算,用来替代pow函数 PHP7

$pow = pow(2,10);
$replace = 2 ** 10;
var_dump($replace == $pow);

定义数组常量 PHP7

const STATUS = [
'ERROR' => 0,
'SUCCESS' => 1
];
echo STATUS['ERROR'];

null合并运算符 PHP7

echo $_GET['name'] ?? 'felix';

新增函数 除法取整数部分 PHP7

echo intdiv(14, 3); //返回整数部分


返回顶部