Magento应用程序必须知道有关服务方法期望的参数以及服务方法提供的结果的返回类型的信息。PHP 5.x不允许标量参数或返回类型的类型提示,因此为了将数组或JSON对象与适当的类类型相互转换,PHP依赖于PHP doc块。具体来说,包含@param
且@return
必须遵循某些规则的行才能使Magento能够在类型之间正确转换
为了使SOAP和REST正常工作,服务接口的doc块必须遵循以下规则:
- Web API公开的所有方法必须遵循这些规则
- 预期作为参数或返回的对象上的所有方法必须遵循这些规则
- 参数必须在doc块中定义为
- @param type $paramName
- 返回类型必须在doc块中定义为
- @return type
- 有效的标量类型包括:(
mixed
或anyType
),bool
(或boolean
),str
(或string
),integer
(或int
)float
,和double
。 - 有效的对象类型包括完全限定的类名称或完全限定的接口名称。
- 数组的任何参数或返回值都可以通过在前面的任何类型后面加上空的方括号来表示
[]
以下是各种类型的一些示例,以及它们在doc块中的外观:
- 参数$ types可以是字符串数组:
- @param string [] $ types
- 参数$ id可以是整数:
- @param int $ id
- 参数$ customer是class的对象
\Magento\Customer\Api\Data\CustomerInterface
:- @param \ Magento \ Customer \ Api \ Data \ CustomerInterface $ customer请注意,即使该类
\Magento\Customer\Api\Data\CustomerInterface
与当前类位于同一名称空间(或子名称空间)中,或者该类的顶部已存在use语句,也必须使用完全限定的名称空间,否则Web API会引发异常。
- @param \ Magento \ Customer \ Api \ Data \ CustomerInterface $ customer请注意,即使该类
- 返回值是类型为对象的数组
\Magento\Customer\Api\Data\CustomerInterface
:- @return \ Magento \ Customer \ Api \ Data \ CustomerInterface []
注意,如果调用了服务方法参数item
,则在SOAP处理期间会出现问题。在SOAP请求处理期间,将删除所有项目节点。这样做是为了将由SOAP服务器包装的数组项展开为一个item
元素。