Есть ли в мире аналоги JavaBeans или JAXB для PHP? Можно ли генерировать PHP-классы из схемы XML?
Общепринятой практикой является публикация API как схем XSD. Ребята из Java и C # могут воспользоваться этим, создав классы прямо из XSD. Есть ли такой же инструмент для PHP?
Upd. Я только что выпустил первый рабочий прототип, он отлично работает с схемами UBL 2.0 и одной простой схемой, но более серьезное тестирование уже на пути. Буду признателен за отправку схем, с которыми вы работаете, поэтому я бы включил их в набор тестов.
Upd. 2. XSD2PHP достиг версии 0.0.5. Проверьте ход выполнения на https://github.com/moyarada/XSD-to-PHP
Основными причинами использования генераторов классов XSD являются
Теперь сравните это с PHP. PHP не проверяет время компиляции и поддерживает динамические методы / свойства. Это устраняет две из основных причин, указанных выше, и делает это не-вопрос, если вам действительно не нужно автоматическое завершение. Другими словами, есть причина использовать генератор XSD-класса в PHP, и, вероятно, также и потому, что он не существует.
Мое предложение состоит в том, чтобы использовать PHPs Simple XML, который создает свойства для динамического соответствия XML во время выполнения. Если вы проверяете свой XML на XSD-файл и затем создаете объект Simple XML, у вас есть структура объектов XML с методами и свойствами без необходимости генерировать код. Совершенно хороший подход в PHP.
Обратите внимание, что я не утверждаю, что SimpleXML такой же, как сгенерированные классы XSD, конечно, нет. , Но это довольно близко, использование и API-интерфейс. Вы все равно делаете что-то вроде $company->employee[2]->firstname
любом случае.
Схемы XSD обычно записываются в файлы WSDL в веб-службах SOAP.
wsdl2php – это инструмент для разбора схем WSDL (XSD) для классов php. Он использует собственный SoapClient php, поскольку он является клиентом.
Проверьте это сообщение для быстрого руководства и использования wsdl2php:
http://itworkarounds.blogspot.com/2011/10/simple-soap-client-with-wsdl2php-using.html
Существует еще один недавний инструмент под названием PiBX – инструмент, вдохновленный JiBX .
С сайта:
PiBX – это структура привязки XML-данных для PHP.
С помощью PiBX вы можете создавать классы PHP, основанные на доступной XML-схеме. Эти классы могут использоваться для маршализации информации в XML без сбоев с проверками схемы, ограничениями или ограничениями.
Некоторое время назад я изучил это, и я, конечно, не смог его найти. Если ваша схема проста, есть парень, который взломал простую версию вместе для плоских схем.
Это все, о чем я знаю. Обычно эти ребята хорошо поддерживают языки, отличные от основных, но они тоже не делают PHP.
DMS Software Reengineering Toolkit – это настраиваемый механизм генерации кода, который может использоваться для обработки произвольных формальных документов в качестве входных данных. DMS может использоваться для генерации кода на суровых выходных языках.
Мы использовали его для генерации собственных Java и COBOL XML-читателей и писателей из DTD, которые являются старшим кузеном схем. Эти же идеи будут легко применены к PHP.
XML – неудобный синтаксис для работы. Существуют генераторы кода, которые используют XML в качестве входных данных, но если XML не является вашим единственным выбором, не ходите по этому маршруту. Я предполагаю, что вы хотите генерировать код во время разработки, а затем загружать его на сервер.
Затем вам, вероятно, потребуется настроить таргетинг на несколько языков (PHP + JavaScript / AJAX + HTML). Поэтому было бы лучше использовать генератор кодов с множеством целевых объектов, особенно если генератор может настраивать несколько активов из одного определения (например, из определения таблицы базы данных, создавать код SQL, HTML-страницы для операций CRUD и любую поддержку JS код).
В настоящее время я работаю над генератором кода, который выполняет многоцелевое задание. Пока нет продукта, но вы можете проверить его методологию на http://www.abse.info .