Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 接口和特性不能正常工作_Php_Symfony_Oop_Foselasticabundle_A2lix Translation - Fatal编程技术网

Php 接口和特性不能正常工作

Php 接口和特性不能正常工作,php,symfony,oop,foselasticabundle,a2lix-translation,Php,Symfony,Oop,Foselasticabundle,A2lix Translation,这是我今天看到的一些奇怪的行为,我想知道为什么。。我要直截了当地说: 因此,我们正在使用一个带symfony和fos-elasticabundle的a2lix翻译 class Class { use Translatable; } class ClassTranslation implements \A2lix\I18nDoctrineBundle\Doctrine\Interfaces\OneLocaleInterface { use Translation; } 在

这是我今天看到的一些奇怪的行为,我想知道为什么。。我要直截了当地说:

因此,我们正在使用一个带symfony和fos-elasticabundle的a2lix翻译

class Class
{
    use Translatable;

}

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

}
在这个场景中,一旦我运行

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

我得到:

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

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

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

好了,奇怪的部分来了

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

class Class
{
    use Translatable;

}

class ClassTranslation 
{
    use Translation;

}
如果我决定不实现该接口,那么命令将顺利运行,该接口将强制您为区域设置atribute使用getter和setter。我只是想知道为什么会发生这种情况。

这可能与

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