2017-12-18 82 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(); 
相关问题