【问题标题】:Interface and Traits does not work properly界面和特征无法正常工作
【发布时间】:2016-10-10 09:16:26
【问题描述】:

这是我今天目睹的一些奇怪行为,我想知道为什么......我会直截了当:

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

class Class
{
    use Translatable;

}

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

}

在这种情况下,一旦我运行

php 应用程序/控制台 fos:elastica:populate

我得到:

[InvalidArgumentException] 参数“locale”不 存在。

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

问题是为什么会发生这种情况。我们拥有来自 trait 的属性,但是一旦我们运行命令它就找不到它。

好的,现在奇怪的部分来了!

在这种情况下,一切都按预期工作:

class Class
{
    use Translatable;

}

class ClassTranslation 
{
    use Translation;

}

如果我决定不实现该命令顺利运行的接口,该接口只会强制您为 locale 属性设置 getter 和 setter。我只是想知道为什么会这样。

【问题讨论】:

    标签: php symfony oop foselasticabundle a2lix-translation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 2012-01-12
      • 1970-01-01
      • 2021-02-24
      • 2022-01-23
      相关资源
      最近更新 更多