генерировать PHP-классы из XSD?

Есть ли в мире аналоги JavaBeans или JAXB для PHP? Можно ли генерировать PHP-классы из схемы XML?

Общепринятой практикой является публикация API как схем XSD. Ребята из Java и C # могут воспользоваться этим, создав классы прямо из XSD. Есть ли такой же инструмент для PHP?

Сейчас я работаю над этой проблемой и собираюсь выпустить инструмент, как только он достигнет более устойчивого состояния. Проверьте здесь http://mikebevz.com/xsd-to-php-tool/

Upd. Я только что выпустил первый рабочий прототип, он отлично работает с схемами UBL 2.0 и одной простой схемой, но более серьезное тестирование уже на пути. Буду признателен за отправку схем, с которыми вы работаете, поэтому я бы включил их в набор тестов.

Upd. 2. XSD2PHP достиг версии 0.0.5. Проверьте ход выполнения на https://github.com/moyarada/XSD-to-PHP

Основными причинами использования генераторов классов XSD являются

  1. Получить проверку времени компиляции
  2. Более простой синтаксис, чем простой старый XML API
  3. Автоматическое завершение работы в среде IDE.

Теперь сравните это с 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 .