以前、tablegateway を使用して挿入\更新を効率的に行う方法について質問したところ、ドキュメントの次のZend\Stdlib\Hydrator\ClassMethodsコードのように通知されました。
public function saveAlbum(Album $album)
{
$data = array(
'artist' => $album->artist,
'title' => $album->title,
);
$id = (int)$album->id;
if ($id == 0) {
$this->tableGateway->insert($data);
} else {
if ($this->getAlbum($id)) {
$this->tableGateway->update($data, array('id' => $id));
} else {
throw new \Exception('Form id does not exist');
}
}
}
次のコードに置き換えることができます。
saveAlbum(Album $album)
{
$hydrator = new ClassMethods(false);
$data = $hydrator->extract($album);
...
しかし、$hydrator->extract($album);それを使用すると空の配列が返されることがわかりました。これの原因は何でしょうか? 関数に渡されるオブジェクトで実行しましたが、有効なようvar_dump()です。$albumこれを機能させるために他に何かしなければならないことはありますか?