mtownsend / collection-xml
Laravel 的 Collection 类缺失的 XML 支持。
Requires
- php: ~7.0|~8.0|~8.1
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- spatie/array-to-xml: ^3.1
Requires (Dev)
- phpunit/phpunit: ^6.4|^8.5|^10.5
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)。有关更多信息,请参阅 许可文件。