Мы работаем над приложением Laravel с модулем планирования. Модуль имеет три типа классов, которые можно поместить в повестку дня: Задача, Событие и Отдел. Поэтому мы получили следующую диаграмму классов: Теперь наш вопрос: если бы мы реализовали эту диаграмму, должны ли мы использовать черту или расширять планируемую модель.
Планируемая модель:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Plannable extends Model
{
// Code
}
Модель задачи:
<?php
namespace App;
use App\Plannable;
class Task extends Plannable
{
// Code
}
Или мы должны использовать это как черту:
Планируемая черта:
<?php
namespace App\Traits;
trait Plannable
{
// Code
}
Модель задачи:
<?php
namespace App;
use App\Plannable;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use Plannable;
// Code
}