PHP的trait實現了程式碼的複用並且突破了單繼承的限制
阿新 • • 發佈:2018-12-07
<?php /** * Created by PhpStorm. * User: * Date: 2018/12/6 * Time: 14:47 */ /** * trait實現了程式碼的複用 * 並且突破了單繼承的限制 * trait不是類,不能例項化 */ /** * trait實現了程式碼的複用優先順序問題 * 1.當父類中的方法與trait類,父類中的方法重名了 * 2.本類中方法優先順序最高,trait的優先順序大於父類的同名方法優先順序 * 3.trait類中有多個同名的方法,怎麼辦 */ trait Demo1 { public function hello() { return __METHOD__; } } trait Demo2 { public function hello() { return __METHOD__; } } class Test{ public function hello() { return __METHOD__; } } class Demo extends Test { //等價於把hello1,hello2方法複製進來 use Demo1,Demo2{ //trait類中有多個同名的方法,怎麼辦 Demo1::hello insteadof Demo2; Demo2::hello as Demo2Hello; } /*public function hello() { return __METHOD__; }*/ public function test1() { return $this->hello(); } public function test2() { return $this->Demo2Hello(); } } $obj = new Demo(); echo $obj->test1(); echo $obj->test2();