请求参数未转换为对象

时间:2018-05-18 08:30:10

标签: php rest api restler

我有一个简单的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

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:要使对象自动转换为工作,必须打开API类的验证。这是通过这两个变量完成的:

// Excluding classes from validation
Defaults::$autoValidationForbiddenCalls = [ ... ];

// Version from which to auto validate (using PHPDocs)
Defaults::$mandatoryValidationFromVersion = 3;

我正在使用的类被排除在验证之外,因此忽略了PHPDoc。