Laravel интерфейс для атрибутов класса модели - PullRequest
0 голосов
/ 28 января 2020

Я пытался реализовать Interface на основе композиции с traits для нескольких (2) моделей в моем приложении.

Мое текущее решение состоит в том, чтобы вручную реализовать средство доступа Laravel для каждый рассматриваемый атрибут, поскольку они могут существовать только через столбцы базы данных, а затем добавить средство доступа к интерфейсу.

interface IsStatable
{
    public function getState(): string;
}
trait Statable
{
    public function getState(): string
    {
        return $this->state;
    }
}
class ModelA extends Model implements IsStatable
{
    use Statable;
}
class ModelB extends Model implements IsStatable
{
    use Statable;
}
class SomeClass
{
    function someMethod(IsStatable $model)
    {
        echo $model->getState();
    }
}

В идеале я хочу быть в состоянии сделать $model->state напрямую вместо $model->getState(), но это кажется невозможным в PHP?

...