mtownsend/collection-xml

Laravel 的 Collection 类缺失的 XML 支持。

1.8.0 2024-03-12 15:42 UTC

This package is auto-updated.

Last update: 2024-09-19 04:15:54 UTC


README

Laravel 的 Collection 类缺失的 XML 支持。

此包旨在与 Laravel 框架配合使用。

安装

通过 composer 安装

composer require mtownsend/collection-xml

注册服务提供者

对于 Laravel 5.4 及以下版本,请将以下行添加到您的 config/app.php

/*
 * Package Service Providers...
 */
Mtownsend\CollectionXml\Providers\CollectionXmlServiceProvider::class,

对于 Laravel 5.5 及以上版本,该包将自动为您注册提供者。

使用 Lumen

要注册服务提供者,请将以下行添加到 app/bootstrap/app.php

$app->register(Mtownsend\CollectionXml\Providers\CollectionXmlServiceProvider::class);

快速开始

集合到 XML

将 Laravel 集合内部的数据转换为有效的 XML

$collection = collect([
    'carrier' => 'fedex',
    'id' => 123,
    'tracking_number' => '9205590164917312751089',
]);

$xml = $collection->toXml();

// Returns
<?xml version="1.0"?>
<root>
    <carrier>fedex</carrier>
    <id>123</id>
    <tracking_number>9205590164917312751089</tracking_number>
</root>

集合到 SOAP XML

请注意,此方法是此包中最容易出错的部分。请彻底检查您的 SOAP 端点和需求,以获得最佳使用效果。

$collection = collect([
    'carrier' => 'fedex',
    'id' => 123,
    'tracking_number' => '9205590164917312751089',
]);

$xml = $collection->toSoapXml('request', 'xmlBody', 'https://yourwebserver/service.asmx?wsdl');

// Returns
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1="https://yourwebserver/service.asmx?wsdl">
    <SOAP-ENV:Body>
        <ns1:ProcessXMLRequest>
            <ns1:xmlBody>
                <?xml version="1.0"?>
                <request>
                    <carrier>fedex</carrier>
                    <id>123</id>
                    <tracking_number>9205590164917312751089</tracking_number>
                </request>
            </ns1:xmlBody>
        </ns1:ProcessXMLRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

请注意:SoapFactory 类将在构建 SOAP XML 时对 $fullUrl 进行ping操作,以查看其是否有效。它不会触发 API 交互,但如果您的 URL 无效,您将遇到异常。

数组到 XML

在不使用集合的情况下将数组转换为 XML

$array = [
    'carrier' => 'fedex',
    'id' => 123,
    'tracking_number' => '9205590164917312751089',
];

$xml = array_to_xml($array);

辅助函数、方法和参数

辅助函数

array_to_xml($array, $root = '')

$root 参数允许您自定义根 XML 元素。默认为 <root>

集合方法

->toXml($root)

参见上面的 array_to_xml()

集合方法

->toSoapXml($root = '', $soapRoot = '', $fullUrl, array $options = [])

$root 参数允许您自定义内部根 XML 元素。默认为 <root>

$soapRoot 是外部 XML 根元素。默认为 xmlBody

$fullUrl 将是完全限定的 SOAP 端点,例如 https://yourwebserver/service.asmx?wsdl请注意:SoapFactory 类将在构建 SOAP XML 时对 $fullUrl 进行ping操作,以查看其是否有效。它不会触发 API 交互,但如果您的 URL 无效,您将遇到异常。

$options 将是 PHP 的 SoapClient 类的有效选项数组。默认设置为 ['trace' => 1]

目的

Laravel 始终更喜欢 json 而不是 xml 的 API 结构。不可避免的是,开发人员将需要与需要 xml 的文件或 API 进行交互,他们通常需要自己解决。

此包旨在为 Laravel 的 Collection 类提供无痛苦的 xml 支持,并附带一些有用的辅助函数。

您可能感兴趣的其它包

鸣谢

测试

您可以使用以下命令运行测试

./vendor/bin/phpunit

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件