从XSD生成PHP类?

时间:2010-02-15 02:34:33

标签: php xml xsd schema code-generation

JavaBeans或JAXB for PHP的世界类似物吗? 是否可以从XML模式生成PHP类?

将API作为XSD架构发布是很常见的做法。 Java和C#人可以通过直接从XSD生成类来获得优势。 PHP有相同的工具吗?

9 个答案:

答案 0 :(得分:8)

我现在正在解决这个问题,并且一旦达到更稳定的状态就会发布该工具。点击http://mikebevz.com/xsd-to-php-tool/

UPD。我刚刚发布了第一个工作原型,它可以在UBL 2.0模式和一个简单模式下正常工作,但更严重的测试正在进行中。如果你发送你正在使用的模式,我会很感激,所以我将它们包含在测试套件中。

UPD。 2. XSD2PHP达到版本0.0.5。检查https://github.com/moyarada/XSD-to-PHP

上的进度

答案 1 :(得分:4)

使用XSD类生成器的主要原因是

  1. 获取编译时间检查
  2. 比普通的旧XML API
  3. 更简单的语法
  4. 在IDE中自动完成。
  5. 现在将其与PHP进行对比。 PHP 进行编译时检查, 支持动态方法/属性。这会导致上述两个主要原因无效,除非您确实需要自动完成,否则这不是问题。换句话说,有理由在PHP中使用XSD类生成器,这可能也是为什么不存在。

    我的建议是使用PHP Simple XML,它在运行时创建属性以动态匹配XML。如果根据XSD文件验证XML,然后创建Simple XML对象,则可以使用方法和属性完成XML对象结构,而无需生成代码。 PHP中非常好的方法。

    请注意,我并未声明SimpleXML与生成的XSD类相同,当然不是。。但它非常接近,使用和API方面。无论如何,你仍然会做$company->employee[2]->firstname这样的事情。

答案 2 :(得分:1)

XSD架构通常用SOAP Web服务上的WSDL文件编写。

wsdl2php 是一个将WSDL(XSD)模式解析为php类的工具。它使用php的原生SoapClient作为它的客户端。

查看这篇文章,了解wsdl2php的快速教程和用法:

http://itworkarounds.blogspot.com/2011/10/simple-soap-client-with-wsdl2php-using.html

答案 3 :(得分:1)

还有另一个名为PiBX JiBX启发工具的工具。

来自网站:

  

PiBX是PHP的XML数据绑定框架。

     

使用PiBX,您可以根据可用的方式生成PHP类   XML的架构。这些类可用于编组信息   XML,无需考虑模式检查,约束或限制。

答案 4 :(得分:0)

我刚才看了一眼,我当然找不到一个。如果您的架构很简单,那么有一个hacked a simple version together用于平面架构的人。

这就是我所知道的。通常these guys擅长支持除主要语言以外的语言,但他们也不做PHP。

答案 5 :(得分:0)

DMS Software Reengineering Toolkit是可配置的代码生成机制,可用于处理任意正式文档作为输入。 DMS可用于生成 用于任意输出语言的代码。

我们使用它从DTD生成本机Java和COBOL XML读取器和编写器,DTD是架构的老兄。同样的想法很容易应用于PHP。

答案 6 :(得分:0)

这似乎做得不错[{3}}

我希望它处理枚举验证,但似乎在我的用例中正常工作。我发现它生成的META .yml文件很有帮助。

答案 7 :(得分:0)

如今,该库似乎是最佳选择: https://github.com/goetas/xsd2php

它为XML Elements生成PHP类,并且可以将其来回转换:

XML-> PHP-> XML

答案 8 :(得分:-3)

XML是一种难以理解的语法。有些代码生成器使用XML作为输入,但除非XML是你唯一的选择,否则不要走这条路。我假设你想在开发时生成代码,然后将其上传到服务器。

然后,您可能需要定位多种语言(PHP + JavaScript / AJAX + HTML)。因此,最好使用多目标代码生成器,特别是如果生成器可以从单个定义中定位多个资产(例如,从数据库表定义,创建SQL代码,用于CRUD操作的HTML页面以及任何JS支持)码)。

我目前正在开发一种执行多目标的代码生成器。还没有产品可用,但您可以在http://www.abse.info查看其背后的方法。