@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, ведь если мне нужно будет получить несколько постов. То каждый последующий пост перезапишет объект предыдущего. т.к. объекты передаются по ссылке.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
serginhold
@serginhold
Но теперь у меня появилась необходимость сделать так, чтобы в разных местах API я мог указать в каком формате мне отдать текст поста (с html тегами или BB кодами).

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

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

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

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

Похожие вопросы