接口和特征不能正常工作

Interface and Traits does not work properly

这是我今天看到的一些奇怪的行为,我想知道为什么..我会开门见山:

所以我们使用 symfony 和 fos elasticabundle 的 a2lix 翻译

class Class
{
    use Translatable;

}

class ClassTranslation  implements \A2lix\I18nDoctrineBundle\Doctrine\Interfaces\OneLocaleInterface
{
    use Translation;

}

在这种情况下,我 运行

php app/console fos:elastica:populate

我得到:

[InvalidArgumentException] Parameter 'locale' does not exist.

但参数实际上在特征中(来自供应商,包括 2 个特征可翻译方法和可翻译属性)

问题是为什么会这样。我们从特征中得到了 属性 但是一旦我们 运行 命令它就找不到它。

好的,奇怪的部分来了!

在这种情况下,一切都按预期进行:

class Class
{
    use Translatable;

}

class ClassTranslation 
{
    use Translation;

}

如果我决定不顺利地实现命令 运行 的界面,界面只会强制您为语言环境属性设置 getter 和 setter。我只是想知道为什么会这样。

这可能与https://github.com/a2lix/I18nDoctrineBundle/issues/16有关。

我认为这与 php 特征无关,因为不会有 InvalidArgumentException。如果接口不存在,可能不会执行特征代码,所以在这种情况下没有错误。请检查您的特征的实现,也许做一些调试输出以查看代码何时执行以及何时发生异常。