Я пытался реализовать 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?