我有这个课程Zgh\FEBundle\Entity\User延伸FOS\UserBundle\Model\User.
use FOS\UserBundle\Model\User as BaseUser;
class User extends BaseUser implements ParticipantInterface
{
use BasicInfo;
// ..
}
Run Code Online (Sandbox Code Playgroud)
和BaseUser班级:
abstract class User implements UserInterface, GroupableInterface
{
protected $id;
// ..
}
Run Code Online (Sandbox Code Playgroud)
和BaseInfo特点:
trait BasicInfo
{
/**
* @ORM\Column(type="string", length=255)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
protected $id;
// ..
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的代码时,我收到此错误:
严格的标准:FOS\UserBundle\Model\User和Zgh\FEBundle\Model\Partial\BasicInfo在Zgh\FEBundle\Entity\User的组合中定义相同的属性($ id).这可能是不兼容的,请考虑在traits中使用访问器方法.
我正在使用Symfony框架.
无论如何要解决trait和父类对象之间关于此属性的这种冲突吗?
我想知道在当前的PHP 5.4实现中是否有可能出现这种行为的原因:
trait T {
public function test(PDO $pdo) {}
}
class C {
use T;
public function test(DOMDocument $dom) {}
}
Run Code Online (Sandbox Code Playgroud)
我认为一个类使用特征的事实,保证这个类有一个特定的接口可用.但是在这里,如果我们无意中将特征方法用于其他目的,我们甚至不会像经典继承那样收到严格标准通知.
这是故意特意允许的吗?做什么的?