与父类的财产冲突

我有这个类ZghFEBundleEntityUser ,它扩展了FOSUserBundleModelUser

use FOSUserBundleModelUser as BaseUser;

class User extends BaseUser implements ParticipantInterface
{
    use BasicInfo;
    // ..
}

BaseUser类:

abstract class User implements UserInterface, GroupableInterface
{
    protected $id;
    // ..
}

BaseInfo特性:

trait BasicInfo
{
    /**
     * @ORMColumn(type="string", length=255)
     * @ORMId
     * @ORMGeneratedValue(strategy="NONE")
     */
    protected $id;

    // ..
}

但是当我运行我的代码时,我得到这个错误:

严格标准:FOS UserBundle Model User和Zgh FEBundle Model Partial BasicInfo在Zgh FEBundle Entity User的组合中定义相同的属性($ id)。 这可能是不兼容的,请考虑在特征中使用访问器方法。

我正在使用Symfony框架。

无论如何解决特质和父类对象之间关于这个属性的冲突?


不,不可能通过使用Trait重写映射的属性。

另外,可能的选择是使用多个抽象实体类,并根据需要扩展您的子实体。

<?php

use FOSUserBundleModelUser as BaseUser;

abstract class AbstractStrategyNoneEntity extends BaseUser
{
    /**
     * @ORMColumn(type="string", length=255)
     * @ORMId
     * @ORMGeneratedValue(strategy="NONE")
     */
    protected $id;
}

abstract class AbstractStrategyAutoEntity extends BaseUser
{
    /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     *
     */
    protected $id;
}

并将其中的一个扩展到您的子实体中。

/**
* @ORMEntity
*/
class Child extends AbstractStrategyNoneEntity 
{
    // Inherited mapping
}

希望这回答你的问题。

链接地址: http://www.djcxy.com/p/11905.html

上一篇: property conflict with parent class

下一篇: PHP Traits: How to resolve a property name conflict?