请求参数未转换为对象
Request parameter is not casted to object
我有一个简单的 API 调用,它应该接受来自类型 Message
的请求参数。我在 $data
中实际得到的是一个 array
...
/**
* @param Message $data Message to push {@from body}
*
* @url POST uploadedFile
* @return bool
*/
public function uploadedFile(Message $data) {
return $this->send(...);
}
}
class Message
{
/**
* @var string */
private $action;
/**
* @var array object to return
*/
private $parameters;
/**
* @var array $type {@type int}
*/
private $type;
/**
* @var string $message {@max 50}
*/
private $message;
}
这是我的 json:
{
"action": "test",
"parameters": [],
"type": [1,2],
"message": "test"
}
这是我得到的错误:
Fatal error: Uncaught TypeError: Argument 1 passed to FCM::uploadedFile() must be an instance of Message, array given in ... on line 22
回答我自己的问题:要使自动转换为对象起作用,必须打开 API class 的验证。这是通过这两个变量完成的:
// Excluding classes from validation
Defaults::$autoValidationForbiddenCalls = [ ... ];
// Version from which to auto validate (using PHPDocs)
Defaults::$mandatoryValidationFromVersion = 3;
我使用的 class 被排除在验证之外,因此 PHPDoc 被忽略。
我有一个简单的 API 调用,它应该接受来自类型 Message
的请求参数。我在 $data
中实际得到的是一个 array
...
/**
* @param Message $data Message to push {@from body}
*
* @url POST uploadedFile
* @return bool
*/
public function uploadedFile(Message $data) {
return $this->send(...);
}
}
class Message
{
/**
* @var string */
private $action;
/**
* @var array object to return
*/
private $parameters;
/**
* @var array $type {@type int}
*/
private $type;
/**
* @var string $message {@max 50}
*/
private $message;
}
这是我的 json:
{
"action": "test",
"parameters": [],
"type": [1,2],
"message": "test"
}
这是我得到的错误:
Fatal error: Uncaught TypeError: Argument 1 passed to FCM::uploadedFile() must be an instance of Message, array given in ... on line 22
回答我自己的问题:要使自动转换为对象起作用,必须打开 API class 的验证。这是通过这两个变量完成的:
// Excluding classes from validation
Defaults::$autoValidationForbiddenCalls = [ ... ];
// Version from which to auto validate (using PHPDocs)
Defaults::$mandatoryValidationFromVersion = 3;
我使用的 class 被排除在验证之外,因此 PHPDoc 被忽略。