Est-il possible d'imbriquer des hydrateurs d'agrégats? Si j'ai les classes suivantes:zf2 - Hydrateurs agrégés imbriqués
class Appointment{
public date;
public startTime;
public endTime;
public User; //* @var User */
}
class User{
public Location; //* @var Location*/
}
... étant renseigné avec le AggregateHydrator suivant (créé à partir d'une usine):
class AppointmentModelHydratorFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator) {
$serviceManager = $serviceLocator->getServiceLocator();
$arrayHydrator = new ArraySerializable();
$arrayHydrator->addStrategy('date', new DateTimeStrategy())
->addStrategy('endTime', new TimeStrategy())
->addStrategy('startTime', new TimeStrategy());
$aggregateHydrator = new AggregateHydrator();
$aggregateHydrator->add($arrayHydrator);
$aggregateHydrator->add($serviceLocator->get('Hydrator\User'));
return $aggregateHydrator;
}
}
Avec la UserHydratorFactory ressemblant à:
class UserHydratorFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator) {
$sm = $serviceLocator->getServiceLocator();
$userHydrator = new UserHydrator($sm->get('User\Mapper'));
$aggregateHydrator = new AggregateHydrator();
$aggregateHydrator->add($userHydrator);
$aggregateHydrator->add($sm->get('HydratorManager')->get('Hydrator\User\Location'));
return $aggregateHydrator;
}
}
Ceci lance une expection car le modèle est retourné comme nul, mais je Si je commente l'ajout de l'hydrateur de localisation à l'hydrateur de l'utilisateur, cela fonctionne bien (bien que les données de localisation ne soient pas chargées). Donc je me demandais si les hydrators agrégés peuvent être imbriqués?