此包已被放弃,不再维护。未建议替代包。

PHP 对象到 XML 映射器

2.0.0 2012-01-22 03:42 UTC

This package is auto-updated.

Last update: 2022-02-01 12:20:01 UTC


README

Doctrine OXM 是一个用于 PHP 5.3 的项目,用于 PHP 对象到 XML 映射,它提供了通过常见的 Doctrine 技术将 XML 持久化到文件系统的支持。

注意:此项目仍处于初级阶段,不应用于任何与生产相关的代码。其 API 仍然相当不稳定,并非所有功能都已实现。欢迎任何有助于推进项目进展的帮助。让我们开始分支吧!

XmlEntityManager

基于 Doctrine 2 ORM 项目的 EntityManager。作为 @XmlRootEntity 映射的对象可以由 XmlEntityManager 管理。当这些对象被持久化时,它们将以 XML 格式保存到用户配置的目录和命名方案中。

$user = new User();
$user->setId(1);
$user->setName("Malcolm Reynolds");
$user->setOccupation("Space Cowboy");

$em->persist($user);
$em->flush();            // saves marshalled user object as XML to the file system.

XmlEntityManager 还允许访问仓库类型对象以再次加载实体。

$user = $em->getRepository("User")->findById(1);

Xml Marshallers

OXM 还为基于 Java Castor XML 映射项目的想法提供了第一类支持,用于将 PHP 对象到 XML 以及反之的 Marshalling 和 Unmarshalling。映射类的元数据可以通过 @Annotations、XML、Yaml 或甚至 PHP 本身进行配置。Marshallers 将使用此类元数据将定义的对象转换为 XML,以及读取 XML 并将它们转换为对象。

Marshall 和 Unmarshal 过程的行为完全可以通过定义的类元数据进行配置。您可以指定每个元素的精确 XML 名称以及它们如何映射到类的字段。支持 XML 属性、元素和 "text" 节点,以及集合。

Marshallers 在 XmlEntityManager 内部使用,但也提供供您代码中的第一类公民使用。这使得在应用程序中处理 XML 变得非常容易,因为您再也不必真正考虑它了!

示例用例

$xml = $this->getRequest()->getParam('posted_xml');

$order = $marshaller->unmarshalFromString($xml);
$this->view->message = "Order recieved:  " . $order->getId();

$update = new UpdateNotification("Order " . $order->getId() . " was received by the application");
$xml = $marshaller->marshalToString($update);

$this->sendToExternalService($xml);

运行测试

安装 PHPUnit (>= 3.5)

复制 phpunit.xml

cp ./phpunit.xml.dist ./phpunit.xml

运行测试

phpunit ./tests

API 文档 - 待办