У меня проблема с ограничениями в Zend Framework 1.x, и я не могу ее заменить или обновить на данный момент. У меня есть новая идея, но я не уверен, что это возможно.
Основной вопрос: Возможно ли создать экземпляр расширенного дочернего объекта, но потом извлечь родительский объект для сериализации?
Чтобы проиллюстрировать, почему, по существу, класс Zend_Mail
имеет некоторые действительно глупые ограничения и проверки типов своих методов, в моем случае конкретно $mail->setType()
.
Моя мысль заключается в том, что я могу создать расширяемый класс (My_Zend_Mail extends Zend_Mail
), а затем переопределить метод setType() {...}
в моем классе, исключив ограничения, позволив мне установить определенные свойства protected
в классе Zend_Mail
. Ограничение заключается в том, что мне нужно передать это удалённому серверу в виде сериализованного объекта, и этот удаленный сервер НЕ будет иметь или распознать класс My_Zend_Mail
, когда он будет неэтериализован. Поэтому мне нужно сериализовать только родителя Zend_Mail
на моем конце.
Итак, вернемся к исходному вопросу, могу ли я извлечь родительский объект после того, как он был создан через дочерний объект?
РЕДАКТИРОВАТЬ: Я нашел следующий вопрос, чей выбранный ответ предлагает хакерский способ переделать сериализованную строку, чтобы она не была инициализирована как другой объект....
Преобразование/литье объекта stdClass в другой класс
Это может сработать, хотя и дальше, похоже, кто-то делает это через класс Reflection, что ближе к тому, что я ищу. Я могу сказать, что выстрел и отчет, если нет других предложений?