У меня есть приложение Zend Framework 3. Я добавил ViewJsonStrategy
в module.config.php
, Это позволяет следующей конечной точке возвращать JSON:
public function helloAction() {
return new JsonModel([
'msg'=> 'Hello World!',
]);
}
Тем не менее, я хочу вернуть объекты
class HelloObjectResponse
{
protected $message;
public function getMessage() : string {
return $this->message;
}
public function setMessage(string $message) : self {
$this->message = $message;
return $this;
}
}
public function helloObjectAction() {
$obj = new HelloObjectResponse();
$obj->setMessage('Hello World!');
return new JsonModel($obj);
}
Это дает мне сообщение об ошибке Zend.
Zend \ View \ Model \ ViewModel :: setVariables: ожидает массив или аргумент Traversable; получил «Приложение \ Модель \ HelloObjectResponse»
Как мне легко сделать этот объект JSON таким образом, чтобы Zend знал, как установить тип MIME и все такое.
use Zend\View\Model\JsonModel;
use Zend\Hydrator\Reflection;
$obj = new HelloObjectResponse();
$obj->setMessage('Hello World!');
$hydrator = new Reflection;
return new JsonModel($hydrator->extract($obj));
Других решений пока нет …