Beispiel #1
0
    /**
     * 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;
    }