horat1us/php-xml-convertible

PHP Xml Convertible 对象特质

1.4.0 2018-03-22 11:22 UTC

This package is auto-updated.

Last update: 2024-09-29 05:06:33 UTC


README

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Latest Unstable Version License Total Downloads

  1. 特质
  2. 接口
  3. 示例

此特质会自动将您的对象转换为 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 许可证