/** * Prepare and inject a named hydrator * * Takes a string indicating a hydrator class name, instantiates the class * by that name, and injects the hydrator instance into the form. * * @param string $hydratorName * @param FormInterface $form * @param string $method * @return void * @throws Exception\DomainException if $hydratorName is not a string, does not resolve to a known class, or the class does not implement Hydrator\HydratorInterface */ protected function prepareAndInjectHydrator($hydratorName, FormInterface $form, $method) { if (!is_string($hydratorName)) { throw new Exception\DomainException(sprintf( '%s expects string hydrator class name; received "%s"', $method, (is_object($hydratorName) ? get_class($hydratorName) : gettype($hydratorName)) )); } if (!class_exists($hydratorName)) { throw new Exception\DomainException(sprintf( '%s expects string hydrator name to be a valid class name; received "%s"', $method, $hydratorName )); } $hydrator = new $hydratorName; if (!$hydrator instanceof Hydrator\HydratorInterface) { throw new Exception\DomainException(sprintf( '%s expects a valid implementation of Zend\Form\Hydrator\HydratorInterface; received "%s"', $method, $hydratorName )); } $form->setHydrator($hydrator); return; }