yii\web\IdentityInterface при использовании репозитория и доменной модели

Обсуждаем, как правильно строить приложения
Ответить
Melodic
Сообщения: 87
Зарегистрирован: 2016.05.11, 17:43
Откуда: Луганск

yii\web\IdentityInterface при использовании репозитория и доменной модели

Сообщение Melodic »

Как реализовать yii\web\IdentityInterface правильно, ведь этот интерфейс требует,что бы класс был сразу и репозиторием и моделью?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii\web\IdentityInterface при использовании репозитория и доменной модели

Сообщение zelenin »

Код: Выделить всё

<?php

namespace common;

use yii\web\IdentityInterface;

final class UserAdapter implements IdentityInterface
{
    private $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public static function findIdentity($id)
    {
        return new UserAdapter(UserRepositoryFactory::create()->findById($id));
    }

    public function getId()
    {
        return $this->user->getId();
    }
}
вместо фабрики июзаете что-то для инициализации репозитория - не знаю, что у вас используется.
Может есть подводные камни - потестируйте.
Melodic
Сообщения: 87
Зарегистрирован: 2016.05.11, 17:43
Откуда: Луганск

Re: yii\web\IdentityInterface при использовании репозитория и доменной модели

Сообщение Melodic »

zelenin писал(а):

Код: Выделить всё

<?php

namespace common;

use yii\web\IdentityInterface;

final class UserAdapter implements IdentityInterface
{
    private $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public static function findIdentity($id)
    {
        return new UserAdapter(UserRepositoryFactory::create()->findById($id));
    }

    public function getId()
    {
        return $this->user->getId();
    }
}
 
вместо фабрики июзаете что-то для инициализации репозитория - не знаю, что у вас используется.
Может есть подводные камни - потестируйте.
DI здесь,как я понял, никак не задействовать, т.к. методы статические.
Да и UserAdapter::findIdentity() должен null возвращать, если пользователь не найден.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii\web\IdentityInterface при использовании репозитория и доменной модели

Сообщение zelenin »

Melodic писал(а):DI здесь,как я понял, никак не задействовать, т.к. методы статические.
внутри статических методов пользуйтесь фабриками, в которых все нужное инжектится через di.
Ответить