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

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

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

22
задан Qwerty 17 February 2010 в 07:30
поделиться

5 ответов

XML - это неудобный синтаксис для работы. Существуют генераторы кода, которые используют XML в качестве входных данных, но если только XML не является вашим единственным выбором, не идите этим путем. Я предполагаю, что вы хотите генерировать код во время разработки, а затем загрузить его на сервер.

Тогда, вероятно, вам придется использовать несколько языков (PHP + JavaScript/AJAX + HTML). Поэтому лучше использовать многоцелевой генератор кода, особенно если он может генерировать несколько активов из одного определения (например, из определения таблицы базы данных создать SQL код, HTML страницы для CRUD операций и любой код поддержки JS).

В настоящее время я работаю над созданием генератора кода, способного работать с несколькими объектами. Продукта пока нет, но вы можете ознакомиться с методологией, лежащей в его основе, на http://www.abse.info.

-3
ответ дан 29 November 2019 в 05:54
поделиться

Я искал это некоторое время назад, и, конечно, не нашел. Если ваша схема простая, есть парень, который взломал простую версию вместе для плоских схем.

Это все, о чем я знаю. Обычно эти ребята хорошо поддерживают языки, отличные от основных, но они не делают PHP.

0
ответ дан 29 November 2019 в 05:54
поделиться

DMS Software Reengineering Toolkit - это настраиваемый механизм генерации кода, который можно использовать для обработки произвольные формальные документы в качестве входных. DMS можно использовать для генерации кода на произвольных языках вывода.

Мы использовали его для создания собственных программ чтения и записи XML для Java и COBOL из DTD, которые являются старшими родственниками схем. Те же идеи легко применить к PHP.

0
ответ дан 29 November 2019 в 05:54
поделиться

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

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

Теперь сравните это с PHP. PHP не имеет проверки времени компиляции, а имеет поддержку динамических методов / свойств. Это аннулирует две из основных причин, указанных выше, и делает это несложным, если только вам действительно не требуется автозаполнение. Другими словами, есть причина использовать генератор классов XSD в PHP, и, вероятно, именно поэтому его не существует.

Я предлагаю использовать PHP Simple XML , который создает свойства для динамического соответствия XML во время выполнения. Если вы проверите свой XML по файлу XSD, а затем создадите объект Simple XML, у вас будет структура объекта XML с методами и свойствами без необходимости генерировать код. Совершенно хороший подход в PHP.

Обратите внимание, что я не утверждаю, что SimpleXML - это то же самое, что и сгенерированные классы XSD, конечно же, нет. . Но он довольно близок по использованию и по API. В любом случае вы все равно делаете что-то вроде $ company-> employee [2] -> firstname .

4
ответ дан 29 November 2019 в 05:54
поделиться

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

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

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

8
ответ дан 29 November 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: