@Alk90
php, mysql, jquery, css, html, api

Как правильно передать объект в класс и стоит ли это делать?

Всем привет!
У меня есть класс Posts, который работает с базой данные (точнее с таблицей постов и связанными с ней таблицами).
Извне, я запрашиваю данные Posts->getById(33);
Класс получает данные из БД, создает на основе полученных данных объекты PostEntity и возвращает в вызывающий класс.
Объект PostEntity представляет из себя класс содежащий сетеры и геттеры с простейшими манипуляциями с данными. Так же он реализует интерфейс JsonSerializable что позволяет мне просто бросать объект в вывод JSON передавая его приложению.

К вопросу:
В объекте поста есть метод PostEntity->getText() который отдает данные с html тегами. Но теперь у меня появилась необходимость сделать так, чтобы в разных местах API я мог указать в каком формате мне отдать текст поста (с html тегами или BB кодами).
Т.к. файл, который вызывает метод Posts->getById(33); никак не взаимодействует, да и не должен взаимодействовать с объектом PostEntity, я никак не могу повлиять на метод PostEntity->getText(), потому что я не вызываю его, т.к. данные выводятся реализуя метод JsonSerializable.
Как решить данную проблему?

У меня есть идея, что вызывая метод Posts->getById(33); я должен передать путь к новому объекту, например, PostEntityBBCodes, который будет расширять класс PostEntity и переопределять метод getText() так, чтобы тот преобразовывал данные не в HTML а в BB коды.

Правильно ли я сделаю в таком случае?
Да и не совсем еще понятно как передать объект в класс Posts, ведь если мне нужно будет получить несколько постов. То каждый последующий пост перезапишет объект предыдущего. т.к. объекты передаются по ссылке.
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
serginhold
@serginhold
php гинеколог-разведчик
Но теперь у меня появилась необходимость сделать так, чтобы в разных местах API я мог указать в каком формате мне отдать текст поста (с html тегами или BB кодами).

Как бы текст хранится в одном каком-то формате.
Если хочется хранить в разных форматах, то должен хранится и соответствующий флаг.

А так задача выглядит как заметить html теги на bb-коды.
И тогда это вообще не должно быть в entity, т.к. это просто форматирование.

Просто отдельно на выводе, что-то вроде:
echo $bbFormatter->format($html); // $html - $entity->getText()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ООО РК Роял Набережные Челны
от 35 000 до 50 000 руб.
Zoon Москва
от 140 000 до 220 000 руб.
20 февр. 2019, в 23:54
1000 руб./за проект
20 февр. 2019, в 23:26
25000 руб./за проект
20 февр. 2019, в 22:04
500 руб./за проект