相关疑难解决方法(0)

特征 - 属性与父类冲突

我有这个课程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 inheritance conflict traits symfony

15
推荐指数
1
解决办法
5413
查看次数

PHP 5.4:为什么类可以用不同的签名覆盖特征方法?

我想知道在当前的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)

我认为一个类使用特征的事实,保证这个类有一个特定的接口可用.但是在这里,如果我们无意中将特征方法用于其他目的,我们甚至不会像经典继承那样收到严格标准通知.

这是故意特意允许的吗?做什么的?

php inheritance overriding traits

12
推荐指数
1
解决办法
7657
查看次数

标签 统计

inheritance ×2

php ×2

traits ×2

conflict ×1

overriding ×1

symfony ×1