Existe-t-il dans le monde des analogues de JavaBeans ou JAXB pour PHP? Est-il possible de générer des classes PHP à partir d'un schéma XML?
Il est courant de publier les API sous forme de schémas XSD. Les utilisateurs Java et C # peuvent en tirer parti en générant des classes directement à partir de XSD. Existe-t-il le même outil pour PHP?
Upd. Je viens de publier le premier prototype fonctionnel, il fonctionne bien avec les schémas UBL 2.0 et un schéma simple, mais des tests plus sérieux sont en cours. J'apprécierais si vous envoyez des schémas avec lesquels vous travaillez, alors je les inclure dans la suite de tests.
Upd. 2. XSD2PHP a atteint la version 0.0.5. Vérifiez l'état d'avancement sur https://github.com/moyarada/XSD-to-PHP
Les principales raisons d'utiliser des générateurs de classe XSD sont:
Maintenant, comparez cela avec PHP. PHP est-ce que pas a la vérification du temps de compilation et il a prend en charge les méthodes/propriétés dynamiques. Cela annule deux des principales raisons ci-dessus et en fait un problème qui ne se pose pas, sauf si vous (vraiment} _ avez besoin de l'achèvement automatique. En d'autres termes, il y a une raison d'utiliser un générateur de classe XSD en PHP, et c'est probablement aussi pourquoi aucun n'existe.
Ma suggestion est d'utiliser PHP Simple XML qui crée des propriétés pour faire correspondre dynamiquement le XML au cours de l'exécution. Si vous validez votre fichier XML par rapport au fichier XSD, puis créez un objet XML simple, votre structure d'objet XML complète avec des méthodes et des propriétés, sans générer de code. Une très bonne approche en PHP.
Notez que je ne déclare pas que SimpleXML est identique aux classes XSD générées, bien sûr que non. . Mais c'est assez proche, utilisation et API. Vous finissez toujours par faire quelque chose comme $company->employee[2]->firstname
de toute façon.
Les schémas XSD sont généralement écrits dans des fichiers WSDL sur SOAP Web Services.
wsdl2php est un outil d’analyse de schémas WSDL (XSD) en classes php. Il utilise SoapClient en tant que client.
Découvrez ce post pour un tutoriel rapide et l'utilisation de wsdl2php:
http://itworkarounds.blogspot.com/2011/10/simple-soap-client-with-wsdl2php-using.html
Il existe un autre outil récent appelé PiBX a JiBX outil inspiré.
Du site:
PiBX est un framework XML-Data-Binding pour PHP.
Avec PiBX, vous pouvez générer PHP classes basées sur un schéma XML Disponible. Ces classes peuvent être utilisées pour regrouper les informations dans XML sans se soucier des vérifications de schéma, des contraintes ou des restrictions.
Cela semble faire un travail décent https://github.com/goetas-webservices/xsd2php
Je souhaite qu'il gère la validation de l'énumération, mais semble fonctionner correctement dans mon cas d'utilisation. J'ai trouvé les fichiers .yml META générés utiles.
J'ai examiné cela il y a un moment et je ne pouvais certainement pas en trouver un. Si votre schéma est simple, il y a un gars qui a piraté une version simple ensemble pour des schémas plats.
C'est tout ce que je sais. Normalement ces gars sont bons pour supporter des langues autres que les langues principales, mais ils ne font pas non plus PHP.
Le DMS Software Reengineering Toolkit est une machine de génération de code configurable, qui peut être utilisée pour traiter des documents formels arbitraires en entrée. DMS peut être utilisé pour générer du code Dans des langues de sortie arbitraires.
Nous l'avons utilisé pour générer des lecteurs et des écrivains XML Java et COBOL natifs à partir de DTD, cousin aîné des schémas. Les mêmes idées s'appliqueraient facilement à PHP.