我是 Zend 框架的新手,并尝试使用 HAL 生成 API 响应。以下是我的问题的简单情况。
班上:
class Version
{
protected $data;
public function __construct($ar){
$data = $ar;
}
public function getArrayCopy(){
return $data;
}
}
$obj = new version(['major'=>1,'minor'=>2,'fix'=>3]);
当我使用 hydrator 进行测试时,它的工作原理如下:
use Zend\Hydrator\ArraySerializableHydrator;
$hydrator = new ArraySerializableHydrator();
$data = $hydrator->extract($obj);
print_r($data); // outputs ['major'=>1,'minor'=>2,'fix'=>3]
我的 HAL 配置如下:
MetadataMap::class => [
[
'__class__' => RouteBasedResourceMetadata::class,
'resource_class' => Version::class,
'route' => 'version',
'extractor' => ArraySerializableHydrator::class,
],
]
我在 Zend expressive(版本 3)请求处理程序中使用以下行
$resource = $this->resourceGenerator->fromObject($obj, $request);
$res = $this->responseFactory->createResponse($request, $resource);
链接生成正确,但元数据(版本信息)为空。任何帮助都感激不尽。
注意:我的真实代码很复杂,在这里我尝试生成一个更简单的问题版本。