2017-12-18 17 views
1

내 특성 (또는 특성이 사용되는 동안 다른 방법)으로 생성자를 실행하지 않아도됩니다. 가능한가?특성에서 생성자를 실행하십시오.

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

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

하지 않음을 당신이 클래스 생성자 코드로 특성 생성자 코드를 오버라이드 (override)하는 경우; 특성은 extends와 같이 상속되지 않습니다 ... 그러나 특성을 사용하는 "중간"클래스를 만든 다음 "중간"에서 myClass를 확장 한 다음 parent :: __ construct()를 호출합니다 - [데모 ] (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();