0

PHP は同じトレイトを 2 回コンパイルしようとしているようです。

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で失敗します:

致命的なエラー: トレイト メソッド setMink は適用されませんでした。

setMinkmethod はMinkDictionarytrait でのみ定義されます。

問題は、 と の両方OrderDictionaryがのFeatureContextメソッドを使用していることMinkDictionaryです。そのため、 を追加use MinkDictionaryしましたOrderDictionary。これは許されませんか?それをコメントアウトすると、すべてが機能しますが、エディターは多くの未解決のメソッドを表示しています - それらがどこから来ているのかわかりません。

4

1 に答える 1

0

もちろん、クラス FeatureContext で MinkDictionary を 2 回 "使用" するため、同じ特性を 2 回コンパイルします。最初はクラス自体で、2 回目は OrderDictionary を介してです。

FeatureContext クラスから「use MinkDictionary」ステートメントを削除するだけです

于 2012-08-08T20:37:48.933 に答える