Blogger Information
Blog 25
fans 0
comment 0
visits 16830
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP不常用特性总结
力挽狂澜的博客
Original
807 people have browsed it

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;


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post