Подскажите пожалуйста, какой метод можно переопределить, чтобы после того как данные были прочтены из базы дописать в текущий объект ещё параметры взятые их другого места ( к примеру из файла ). Постановка задачи именно такая - связи не подходят, нужно чтобы именно этот объект брал дополнительные данные из другого места и добавлял их к тем что были получены из таблицы.
Значит задача стоит так: Есть всем известный MIGXdb, он умеет в беке создавать таблички связанные с базой данных, что позволяет добавлять/редактировать записи таблицы без программирования собственной CMP и контроллеров. Но данный компонент работает только с одной таблицей - для этого в его параметры нужно указать класс прописанный в схеме базы данных. Вся загвоздка в том что хотелось бы добавляя данные в одну таблицу одно передаваемое поле парсить (банальный explode) и записывать как строки в связанную таблицу - с этим проблем нет, я переопределил в моём классе метод save и отслеживаю передачу этого поля, затем сохраняю и запускаю parent::save();
Теперь обратная задача - при редактировании загрузить в поле данные из связанной таблицы предварительно собрав их в одну строку. Я вижу такую логику: в классе прописанном в схеме данных переопределить метод который достаёт дынные из базы и записывает их в массив, добавив туда извлечение нужных мне данных.
Сейчас я обнаружил что можно переопределить процессор с которым будет работать MIGXdb, возможно это лучшее решение или быть может проще расширить класс? Что скажите?
Ну собственно был переопределён метод toArray, данный случай удовлетворяет, но если знаете лучшее место для добавления произвольных дынных - буду признателен если расскажите.
Человек спросил что переопределить, я ответил :)
А переопределять класс или процессор писать - это уже другой вопрос, и он совершенно имеет место быть. На усмотрение человека.
Не факт. Все зависит от задачи. К примеру, если задача четко локальная, и точно известно что только с такими классами надо выполнить данную функцию, то с классом получится предпочтительней. Предпочтительней в том плане, что где бы вы ни выполнили инициализацию объекта $modx->getObject() или $som_object->getOne('MyClass'), у вас всегда будет выполнен этот метод и будут получены данные.
А вот если задача именно в данном месте получить сопутствующие данные, то процессор может оказаться предпочтительнее, так как в таком случае вы не завязаны на конкретном классе, и даже если там будут данные другого касса, то процессор все равно их получит.
Резюме: все зависит от задачи.