php7.3: ошибка компиляции с двумя чертами, которые определяют одно и то же свойство - PullRequest
1 голос
/ 20 июня 2019

У меня есть класс пользователя:

class SuluUser extends BaseSuluUser implements SSOUserInterface, ResourceOwnerInterface, EquatableInterface
{
    use UserTrait;
    use SSOUserTrait {
        SSOUserTrait::__construct as __ssoConstruct;
        SSOUserTrait::setUserData as setUserDataTrait;
    }

    // ...
}

Это черты:

trait UserTrait
{
    // lot's of other fields

    /**
     * @var string
     * @ORM\Column(type="string")
     */
    protected $username = "";
}

И

trait SSOUserTrait
{
    // lots of other fields

    /**
     * @var string
     */
    protected $username;

    // lots of getters and setters
}

И определение BaseUser:

abstract class BaseUser extends ApiEntity implements UserInterface, Serializable, EquatableInterface
{
    /**
     * @var string
     * @Expose
     */
    protected $username;

    // lots of other fields
}

Но он работает под php 7.3 в этой фатальной ошибке компиляции:

Неустранимая ошибка: Sulu \ Bundle \ SecurityBundle \ Entity \ BaseUser и MyOrg \ SsoBundle \ Entity \ UserTrait определяют одно и то же свойство ($ username) в составе MyOrgFrontendBundle \ Entity \ SuluUser. Однако определение отличается и считается несовместимым. Класс был составлен в sulu / src / MyOrgFrontendBundle / Entity / SuluUser.php в строке 25

Есть какие-нибудь идеи, как это исправить?

Огромное спасибо!

1 Ответ

1 голос
/ 20 июня 2019

Вам просто нужно обновить одну черту, чтобы свойство совпадало с другой чертой.

Например, измените UserTrait:

protected $username;

вместо

protected $username = "";

Или наоборот, но обе черты должны совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...