2017-12-18 81 views
1

我不想在我的trait中執行構造函數(或使用trait時的另一種方法)。可能嗎?在trait中執行構造函數

trait test{ 
    public function __construct() 
    { 
     echo 'test'; 
    } 
} 

class myClass{ 
    use test; 
    public function __construct(){ 
     echo 'myClass'; 
    } 
} 
new myClass(); 
+0

如果你不重寫一個類的構造函數代碼的特徵構造函數代碼; traits不是繼承類似擴展....但你可以創建一個使用特徵的「中間」類,然後從這個「intermediate」擴展myClass,然後調用parent :: __ construct() - [Demo ](https://3v4l.org/8kVtU) –

回答

1

嘗試像這樣(test):

trait test{ 
    public function __construct() 
    { 
     echo 'test'; 
    } 
} 

class myClass{ 
    use test { 
     test::__construct as private __tConstruct; 
    } 
    public function __construct(){ 
     $this->__tConstruct(); 
    } 
} 
new myClass(); 
相關問題