博客列表 >PHP不常用特性总结

PHP不常用特性总结

力挽狂澜的博客
力挽狂澜的博客原创
2018年05月22日 13:54:49802浏览

1.可变参数列表 要求v5.6+

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);//10
?>

v5.5及以前

<?php
function sum() {
    $acc = 0;
    foreach (func_get_args() as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);//10
?>


2.Trait[特性的属性和方法可被调用的类吸收] 要求v5.4+

<?php
//同名冲突解决方案,默认优先级为 trait覆盖父类,子类覆盖trait.子类中多个trait有同名冲突需要显式使用insteadof
操作符来指明使用冲突中的哪一个 可以衔接as 给trait的func取别名,也可以单独使用as更改trait的func的访问权限
class people {
    public function __construct(){
        echo '我是人类<br/>';
    if(method_exists($this, 'init')){
        $this->init();
    }
    }
}

Trait child {
    public function cry(){
        echo '我会child哭';
    }
    
    private function init(){
        echo '我是小孩<br/>';
    }
}

Trait boy {
    public function cry(){
        echo '我会boy哭';
    }
    
    protected function init(){
        echo '我是小孩<br/>';
    }
}

class student extends people {
    use child,boy{
        child::init insteadOf boy;
        boy::cry insteadOf child;
        init as public;
    }
    // public function init(){
    //     echo '我是学生<br/>';
    // }
}
$student = new student;
$student->cry();
exit;


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议