PHP: <?php abstract class Model //базовый класс для моделей (разделов, категорий, заметок, страниц) { ... abstract public function getTable(): string; abstract public function getId(): int; public function writeToDB() { $db = new DB($this->getTable()) $db->write($this->getId()); } } abstract class File //базовый класс для файлов { ... abstract public function getTable(): string; abstract public function getId(): int; public function writeToDB() { $db = new DB($this->getTable()) $db->write($this->getId()); } } ?> можно ли куда-нибудь вынести общий метод writeToDB() классов Model и File? как это в фреймворках делается?
А ты будешь прямо весь файл пихать в бедную БД? Вообще, трейты (trait) для таких штук придуманы как раз.
нет конечно, ты что.... информацию о файле надо записать в БД --- Добавлено --- Можно конечно в трейт вынести, но это же не совсем хорошо?
@Konstant1n, просто такая запись о файле вполне укладывается в концепцию модели, которую ты избрал, в таком случае. В чём существенное отличие будет? Ты, я так понимаю, творить пытаешься Active Record? --- Добавлено --- Некоторые считают, что не хорошо. С другой стороны, самый популярный на данный момент фреймворк Laravel - это трейт в трейте и трейтом погоняет.
Мо пишу собственный php mvc сайт. изучаю для понимания. дальше планы в yii2.0. Отличие в том, что в File будет загрузка, удаление, переименование файла. А в Model этого не будет. Сейчас вот открыл два этих класса и сравниваю. Вижу, что в File есть get, save, delete, и то же самое есть в Model, при этом в Model больше ничего нет, а в File + еще загрузка, удаление файла. а как тогда сделать так, чтобы подключение трейта в класс было обязательным, чтобы не забыть как-нибудь
придётся так. в трейт не получится - есть static свойства --- Добавлено --- Тогда будет множественное наследование - File extends Model, FileImage extends File. так норм будет?
Тогда будет множественное наследование - File extends Model ошибся, можно и трейт. так и сделаю, чё я голову морочу + интерфейсы кину
Где? Какое множественное? Файл наследуется от модели, никакого множественного нету. Его в принципе нету в PHP. Множественное - это если бы можно было написать PHP: class File extends Model, NamedObject, HrenZnaetChto {} Но в PHP вместо множественного наследования интерфейсы и трейты