2013-04-25 3 views
0

Есть некоторые PHP библиотеки, реализующие сериализации данных в XML-формате, как serialize() и unserialize() (с восстановлением объектов из XML) функций объектов с private и protected полей?PHP XML сериализатору

PEAR XML_Serializer отлично работает с типами подсказок, но он не имеет отношения к защищенным полям.

+1

Если PEAR XML_Serializer отлично работает, возможно, легко добавить поддержку защищенных полей, используя отражение PHP 5.3? Я могу себе представить, что это невозможно, когда класс был написан, поэтому возможно добавление флага и расширение методов serialize/deserialize для полей могли бы это сделать. Теперь он доступен на github, поэтому может быть легко исправлено и отслеживание изменений в верхнем течении: https://github.com/pear/XML_Serializer – hakre

+0

@hakre Большое спасибо, потребовалось всего 6 строк кода для исправления XML_Serializer/XML_Unserializer классы для наших требований к проекту! – zavg

+0

Я предлагаю вам поставить вилку на github. так что люди из груши видят это. может быть очень полезно, я бы сказал. защищенные члены могут иметь смысл в сериализации (однако это может быть угловой случай и, вероятно, запах). Но обмен все равно хорошо. – hakre

ответ

1

Надеясь, что это не считается спамом, но я работал над библиотекой, которая занимается сериализацией и десериализацией объектов из и в XML.

https://github.com/evert/sabre-xml/

Однако это не делает именно то, что вы просите. Каждому объекту, который требуется сериализовать, необходимо реализовать метод serializeXML и deserializeXML. В этом методе вы можете выбрать точно, что вам нужно реализовать.

Если вы планируете использовать это, я бы с радостью включил точную функцию, которая вам нужна в качестве характеристики PHP 5.4. Просто пришлите мне сообщение (вы можете найти мою информацию о github).

+0

Большое спасибо, но мы легко изучили классы PEAR XML_Serializer, которые в своем комментарии предложили hakre. Мы решили использовать ваш путь перед попыткой расширить функциональность XML_Serializer. – zavg

+2

@Evert: до тех пор, пока он находится на тему и полезен, а не спам, и вы раскрываете это, как правило, не проблема здесь, на веб-сайте. Всегда приятно получать отзывы от разработчиков, которые сами пишут библиотеки, поэтому это больше выигрыш, чем что-либо еще. – hakre

+0

Спасибо @hakre :) – Evert

2

Symfony Serializer Component обеспечивает serialize() и deserialize() методы и поддерживает множество форматов из коробки: XML, JSON, YAML ...

Он входит в Symfony, но вы можете использовать его даже в не проекта Symfony, установив его с композитором:

composer require symfony/serializer 

Если вы используете ObjectNormalizer, как показано на documentation example, dont't забудьте также установить symfony/property-access.

Смежные вопросы