pdeans/ miva-provision
Miva远程配置PHP库。
Requires
- php: ^5.4 || ^7.0 || ^8.0
- pdeans/http: ^1.1
- pdeans/xml-builder: ^1.0
Requires (Dev)
README
此包已被废弃,不再维护。
Miva远程配置
PHP库,包含与Miva远程配置模块交互的完整工具集。库组件包括创建Miva配置xml标记、发送配置xml请求和捕获配置xml响应的工具。
安装
通过Composer安装。
composer require pdeans/miva-provision
使用方法
首先,创建一个新的“配置”管理器实例。管理器实例需要三个参数
- 商店代码 - 店铺设置 > 店铺代码
- XML请求URL - 域设置 > 远程配置 > XML请求URL
- 访问令牌 - 域设置 > 远程配置 > 访问令牌
use pdeans\Miva\Provision\Manager as Provision; $store_code = 'PS'; $url = 'http://www.example.com/mm5/json.mvc?Function=Module&Module_Code=remoteprovisioning&Module_Function=XML'; $token = '12345'; $prv = new Provision($store_code, $url, $token);
创建管理器实例后,可以使用它来生成配置xml标记以及发送配置请求。
创建配置XML标记
该库使用简单且功能丰富的pdeans XML Builder包来轻松生成Miva配置标签。
使用配置标签生成器
使用create
方法生成配置xml标签。create
方法将根元素(配置标签名称)的名称作为第一个参数,将一个关联数组作为第二个参数,该数组包含构建根属性元素和/或子元素的数据。
以下是一个简单的示例
$xml = $prv->create('Category_Add', [ '@tags' => [ 'Code' => 'Tools', 'Name' => $prv->cdata('Class Tools and Skill Kits'), ], ]);
这将生成以下xml
<Category_Add> <Code>Tools</Code> <Name><![CDATA[Class Tools and Skill Kits]]></Name> </Category_Add>
父/子元素
注意上述示例中@tags
数组下的数组键值是如何工作的。键表示xml元素名称,值表示xml元素值。也可以根据此模式嵌套子标签,父元素由数组键表示,数组值由键值对组成的子元素数组。
元素值助手
可以使用cdata
助手方法将元素值包裹在<![CDATA[]]>
标签内,而可以使用decimal
助手方法将十进制数字格式化为标准十进制格式,默认保留两位小数并去除逗号。decimal
助手方法接受一个可选的第二参数来设置精度。
// Output: <![CDATA[Class Tools and Skill Kits]]> echo $prv->cdata('Class Tools and Skill Kits'); // Output: 49.00 echo $prv->decimal(49.0000000); // Output: 49.001 echo $prv->decimal(49.0005, 3);
保留键
@tags
键代表xml构建器使用的三个保留键之一(每个都包含快捷键对应物),用于解析和生成xml。保留键如下
@attributes Key 快捷键: @a
使用 @attributes
键来创建 XML 元素属性。同样,@a
键也被支持作为 @attributes
键的快捷方式。
示例
$xml = $prv->create('CategoryProduct_Assign', [ '@attributes' => [ 'category_code' => 'Food', 'product_code' => 'ale-gallon', ], ]); $xml = $prv->create('CategoryProduct_Assign', [ '@a' => [ 'category_code' => 'Food', 'product_code' => 'ale-gallon', ], ]);
生成的 XML
<CategoryProduct_Assign category_code="Food" product_code="ale-gallon"/>
@tags 键 快捷方式: @t
@tags
键接受一个关联数组的数据来构建根元素的孩子。同样,@t
键也被支持作为 @tags
键的快捷方式。
示例
$xml = $prv->create('ProductAttribute_Add', [ '@a' => [ 'product_code' => 'chest', ], '@tags' => [ 'Code' => 'lock', 'Type' => 'select', 'Prompt' => $prv->cdata('Lock'), ], ]); $xml = $prv->create('ProductAttribute_Add', [ '@a' => [ 'product_code' => 'chest', ], '@t' => [ 'Code' => 'lock', 'Type' => 'select', 'Prompt' => $prv->cdata('Lock'), ], ]);
生成的 XML
<ProductAttribute_Add product_code="chest"> <Code>lock</Code> <Type>select</Type> <Prompt><![CDATA[Lock]]></Prompt> </ProductAttribute_Add>
@value 键 快捷方式: @v
@value
键明确设置 XML 元素的值。通常,这仅适用于需要同时设置属性和值的 XML 元素。同样,@v
键也被支持作为 @value
键的快捷方式。
示例
$xml = $prv->create('Module', [ '@attributes' => [ 'code' => 'customfields', 'feature' => 'fields_prod', ], '@tags' => [ 'ProductField_Value' => [ '@attributes' => [ 'product' => 'chest', 'field' => 'armor_type', ], '@value' => 'wood', ], ], ]); $xml = $prv->create('Module', [ '@a' => [ 'code' => 'customfields', 'feature' => 'fields_prod', ], '@t' => [ 'ProductField_Value' => [ '@a' => [ 'product' => 'chest', 'field' => 'armor_type', ], '@v' => 'wood', ], ], ]);
生成的 XML
<Module code="customfields" feature="fields_prod"> <ProductField_Value product="chest" field="armor_type">wood</ProductField_Value> </Module>
请注意,@tags
键仅在标签数据关联数组的第一个级别使用,因为它代表子标签数据,而其他两个保留键可以在关联数组的任何子级别使用。
重复标签
有时在 XML 中使用重复的标签,这与关联数组的键值对不兼容。为了避免这种情况,元素名仍然作为数组键传递,但是数组值由一个包含标签数据的数组序列组成。
$xml = $prv->create('Order_Add', [ '@t' => [ 'Charges' => [ 'Charge' => [ [ 'Type' => 'SHIPPING', 'Description' => 'Shipping: UPS Ground', 'Amount' => 5.95 ], [ 'Type' => 'TAX', 'Description' => 'Sales Tax', 'Amount' => 2.15 ], ], ], ], ]);
生成的 XML
<Order_Add> <Charges> <Charge> <Type>SHIPPING</Type> <Description>Shipping: UPS Ground</Description> <Amount>5.95</Amount> </Charge> <Charge> <Type>TAX</Type> <Description>Sales Tax</Description> <Amount>2.15</Amount> </Charge> </Charges> </Order_Add>
自闭合标签
要生成不带属性的空闭合元素,请将数组值传递为 null。
$xml = $prv->create('Order_Add', [ '@t' => [ 'TriggerFulfillmentModules' => null, ], ]);
生成的 XML
<Order_Add> <TriggerFulfillmentModules /> </Order_Add>
发送配置请求
配置请求通过 send
方法发送。
$response = $prv->send($xml);
默认情况下,send
方法将自动在传递给方法的方法数据前添加 Store
(带有当前存储代码)和 Provision
标签。如果您希望省略此功能,只需将 true 作为第二个参数传递。
$response = $prv->send($xml, true);
附加标签助手
以下附加助手可以帮助准备要发送的配置请求 XML。如上所述,send
方法默认会调用 addStore
和 addProvision
助手方法,在发送之前自动准备 XML 数据。
// Appends <Domain></Domain> element to xml $xml = $prv->addDomain($xml); // Appends <Store code="store code"></Store> element to xml $xml = $prv->addStore($xml); // Appends <Provision></Provision> element to xml $xml = $prv->addProvision($xml);
配置响应
每次通过 send
方法发送配置请求时,都会返回一个响应对象。响应对象是 Zend 框架的 Diactoros 响应对象的一个实例,该对象实现了 PSR-7 HTTP 消息接口。
助手方法
管理实例还包括助手方法,以便在需要时轻松返回或交换存储代码、请求 URL 或访问令牌。助手方法示例
// Get store code $store_code = $prv->getStore(); // Set store code $prv->setStore('store code'); // Get provision request url $url = $prv->getUrl(); // Set provision request url $prv->setUrl('request url'); // Get provision access token $token = $prv->getToken(); // Set provision access token $prv->setToken('access token');
版本说明
版本 2 当前需要 PHP 5.4 或更高版本,但是如果需要支持 PHP 5.3,则可以使用版本 1。