doctrine / oxm
PHP 对象到 XML 映射器
Requires
- php: >=5.3.2
- doctrine/common: >=2.1.0
- symfony/console: >=2.0
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.xml
cp ./phpunit.xml.dist ./phpunit.xml
运行测试
phpunit ./tests