在另一个特征和类中引用相同的特征

时间:2012-08-06 09:57:23

标签: php traits

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();
    }
}

编译失败并出现致命错误

  

致命错误:Trait方法setMink尚未应用,因为在LunchTime \ DeliveryBundle \ Features \ Context \ FeatureContext

上存在与其他特征方法的冲突      

setMink方法仅在MinkDictionary特征中定义。

问题是OrderDictionaryFeatureContext都在使用MinkDictionary中的方法。这就是我在use MinkDictionary中添加OrderDictionary的原因。这是不允许的?如果您对此进行评论,那么一切正常,但编辑器显示了许多未解决的方法 - 它不知道它们来自何处。

1 个答案:

答案 0 :(得分:0)

当然它会编译两次相同的特性,因为你在类FeatureContext中“使用”MinkDictionary两次 - 首先在类本身中,第二次在OrderDictionary中。

只需从FeatureContext类中删除“使用MinkDictionary”语句