Php 接口和特性不能正常工作
这是我今天看到的一些奇怪的行为,我想知道为什么。。我要直截了当地说: 因此,我们正在使用一个带symfony和fos-elasticabundle的a2lix翻译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; } 在
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的实现,也许做一些调试输出以查看代码何时执行以及执行的时间