У меня есть два вида заметок: ReferenceNote и TaskNote. Они оба унаследованы от BaseNote.
Когда я создаю новую заметку, в запросе вводится текст, и в зависимости от этого типа я создаю соответствующую модель.
Но как я могу получить соответствующую модель, когда мне нужно получить заметку по id
?
Мое текущее решение:
$base_note = BaseNote::find($id);
$note = $note_factory->getNote($base_note);
На фабрике:
function getNote(BaseNote $base_note) {
if ($base_note->type === self::REFERENCE_NOTE_TYPE) {
$note = new ReferenceNote($base_note->getAttributes());
//logic of adding additional attributes for reference note
} else {
$note = new TaskNote($base_note->getAttributes());
//logic of adding additional attributes for task note
}
}
Есть ли лучший способ сделать это?