🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
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; ~~~