是否可以嵌套聚合水合器?如果我有以下课程:
class Appointment{
public date;
public startTime;
public endTime;
public User; //* @var User */
}
class User{
public Location; //* @var Location*/
}
...正在填充以下 AggregateHydrator(从工厂创建):
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;
}
}
UserHydratorFactory 看起来像:
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;
}
}
当模型返回为空时,这是一个期望,但是如果我注释掉将位置水合器添加到用户水合器,它工作正常(尽管没有加载位置数据)。所以我想知道聚合水合器是否能够嵌套?