Laravel: разница между использованием черты или расширением модели - PullRequest
1 голос
/ 21 мая 2019

Мы работаем над приложением Laravel с модулем планирования. Модуль имеет три типа классов, которые могут быть включены в повестку дня: Задача, Событие и Отдел. Поэтому мы придумали следующую диаграмму классов: Class Diagram Теперь наш вопрос: если бы нам нужно было реализовать эту диаграмму, должны ли мы использовать черту или расширить планируемую модель.

Планируемая модель:

<?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
}

1 Ответ

0 голосов
/ 21 мая 2019

Когда вы пытаетесь расширить класс, это означает, что отношение "является", Автомобиль расширяет Автомобиль, Автомобиль "является" Транспортным средством. В вашем примере «Задача» является «Планируемой». Это правда?

С другой стороны, черты используют другой подход, вроде "Автомобиль использует колеса". В вашем примере снова, Task использует Plannable. Выглядит лучше, чем расширение, я думаю?

Трудно сказать больше, не понимая, какие функции вы будете использовать для этой реализации. Надеюсь, это дает некоторые идеи.

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