horat1us / php-xml-convertible
PHP Xml Convertible 对象特质
1.4.0
2018-03-22 11:22 UTC
Requires
- php: >=7.0
- horat1us/array-js-prototype: ^1.0
Requires (Dev)
- phpunit/phpunit: 5.2.*
This package is auto-updated.
Last update: 2024-09-29 05:06:33 UTC
README
此特质会自动将您的对象转换为 XML 表示形式(DOMElement
)。所有您的公共属性(您可以覆盖方法 getXmlProperties)将被转换为属性。
要在您的对象中声明子元素,您需要设置 $xmlChildren 属性。
要更改元素名称,您需要设置 $xmlElementName 属性 (默认使用简短类名)
安装
composer require horat1us/php-xml-convertible
测试
make test
使用方法
您只需声明您的类以实现 Horat1us\XmlConvertibleInterface
并使用 Horat1us\\XmlConvertible
特质
<?php namespace Horat1us\Examples; use Horat1us\XmlConvertible; use Horat1us\XmlConvertibleInterface; class Person implements XmlConvertibleInterface { use XmlConvertible; public $name; public $surname; public static function fromJson(string $json): Person { $array = json_decode($json, true); $object = new static; $object->name = $array['name'] ?? null; $object->surname = $array['surname'] ?? null; return $object; } }
关于
此特质和接口在创建对象以解析某些内容并代表 XML 结构时非常有用,例如
XmlConvertible::toXml 示例 1
<?php require_once(dirname(__DIR__) . '/vendor/autoload.php'); use Horat1us\Examples\Person; $document = new \DOMDocument; $element = Person::fromJson('{"name": "Alexander", "surname": "Letnikow"}')->toXml($document); $document->appendChild($element); echo $document->saveXml();
将输出
<?xml version="1.0"?> <Person name="Alexander" surname="Letnikow"/>
XmlConvertible::fromXml 示例 2
<?php require_once(dirname(__DIR__) . '/vendor/autoload.php'); use Horat1us\Examples\Person; $xml = '<?xml version="1.0"?> <Person name="Alexander" surname="Letnikow"><Head size="big" mind="small" /></Person>'; $document = new \DOMDocument; $document->loadXML($xml); $person = Person::fromXml($document); echo print_r($person, true);
将输出
Horat1us\Examples\Person Object
(
[name] => Alexander
[surname] => Letnikow
[xmlChildren] => Array
(
[0] => Horat1us\XmlConvertibleObject Object
(
[xmlChildren] => Array
(
)
[xmlElementName] => Head
[size] => big
[mind] => small
)
)
[xmlElementName] => Person
)
查看测试以了解更多关于所有功能的信息。
许可证
此项目是开源软件,许可协议为 MIT 许可证