2012-08-06 2 views
0

PHP는 동일한 형질을 두 번 컴파일하려고 시도하는 것 같습니다.다른 특성 및 클래스에서 동일한 형질을 참조하십시오.

use Behat\MinkExtension\Context\MinkDictionary; 
class FeatureContext 
{ 
    use MinkDictionary, OrderDictionary; 
} 

use Behat\MinkExtension\Context\MinkDictionary; 
trait OrderDictionary 
{ 
    //if you comment out this line, everything works, but methodFromMinkTrait is 
    //unresolved 
    use MinkDictionary; 

    public function myMethod($element, $text) 
    { 
     //some method that uses methods from MinkDictionary 
     return $this->methodFromMinkTrait(); 
    } 
} 

컴파일은 치명적인 오류와 함께 실패

Fatal error: Trait method setMink has not been applied, because there are collisions with other trait methods on LunchTime\DeliveryBundle\Features\Context\FeatureContext

setMink method is only defined in MinkDictionary trait.

문제는 OrderDictionaryFeatureContext 모두 MinkDictionary에서 방법을 사용하여 점이다. 그것이 OrderDictionaryuse MinkDictionary을 추가 한 이유입니다. 허용되지 않습니까? 만약 당신이 그것을 언급한다면, 모든 것이 작동하지만, 편집자는 많은 미해결의 방법을 보여주고 있습니다 - 그들이 어디에서 왔는지 알지 못합니다.

답변

0

물론 FeatureContext 클래스에서 MinkDictionary를 두 번 사용하기 때문에 클래스 자체에서 두 번째로 OrderDictionary를 통해 두 번째로 동일한 특성을 두 번 컴파일합니다.

그냥 적 특성에 대해 알고 싶어 모두가 여기에있는 FeatureContext 클래스

+0

에서 "MinkDictionary을 사용하여"문을 제거 : http://www.xpertdeveloper.com/2011/11/trait-in-php/ – jrfish

관련 문제