* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form; use Symfony\Component\Form\Guess\Guess; use Symfony\Component\Form\Exception\UnexpectedTypeException; class FormTypeGuesserChain implements FormTypeGuesserInterface { private $guessers = array(); /** * @param FormTypeGuesserInterface[] $guessers Guessers as instances of FormTypeGuesserInterface * * @throws UnexpectedTypeException if any guesser does not implement FormTypeGuesserInterface */ public function __construct($guessers) { if (!is_array($guessers) && !$guessers instanceof \Traversable) { throw new UnexpectedTypeException($guessers, 'array or Traversable'); } foreach ($guessers as $guesser) { if (!$guesser instanceof FormTypeGuesserInterface) { throw new UnexpectedTypeException($guesser, 'Symfony\Component\Form\FormTypeGuesserInterface'); } if ($guesser instanceof self) { $this->guessers = array_merge($this->guessers, $guesser->guessers); } else { $this->guessers[] = $guesser; } } } /** * {@inheritdoc} */ public function guessType($class, $property) { return $this->guess(function ($guesser) use ($class, $property) { return $guesser->guessType($class, $property); }); } /** * {@inheritdoc} */ public function guessRequired($class, $property) { return $this->guess(function ($guesser) use ($class, $property) { return $guesser->guessRequired($class, $property); }); } /** * {@inheritdoc} */ public function guessMaxLength($class, $property) { return $this->guess(function ($guesser) use ($class, $property) { return $guesser->guessMaxLength($class, $property); }); } /** * {@inheritdoc} */ public function guessPattern($class, $property) { return $this->guess(function ($guesser) use ($class, $property) { return $guesser->guessPattern($class, $property); }); } /** * Executes a closure for each guesser and returns the best guess from the * return values. * * @param \Closure $closure The closure to execute. Accepts a guesser * as argument and should return a Guess instance * * @return Guess|null The guess with the highest confidence */ private function guess(\Closure $closure) { $guesses = array(); foreach ($this->guessers as $guesser) { if ($guess = $closure($guesser)) { $guesses[] = $guess; } } return Guess::getBestGuess($guesses); } } __halt_compiler();----SIGNATURE:----h5RWDbT+pVx8we6ECGKKNWmcojwnjTqhCztDQg618SUkYfXdGY+Jgisidx98mlrqdQy4B45H43HWQUmv5PFClh4yV+qjukjm+EHjii4CXgmxT8TAkDz2ze72aQfO9+uZDtLEcolcoGcoTih/8JDeRVr/FUXQGIfzmQ+JUk+m7Qu49pQ7L2KDR8upFYnU1uvA0YWSsLOcrwNUulm2uH4M1U9poj7IuIY10u5FtnBXGgOhEGm9MvCbVXwT+JgXWCTSPmsajZYCvbUb5AdlyZbIq1zvRFHWVxH9jXhmtB6lfEsrK8M/aNhsLVgZ7PpuiEingwMSt4ZTSXfZh/eQGeOa2Bc+Vdj5DN457CLb19ttMNz1EAFaRE4PrsysqE1ReYZHZqlOAAfyFVU72snQhJUbIYaNLNkOkQ+aC3HzLurOACz1amyOxBaLOljZdn6i0w6HPb5n1uxFLqzLzfLioBIOGoFr70dXPudBlvdK1HPbKf7hgmlqxt1xPFJ76MTp5Ix/6n/28GQHCNaLTQT/i3SDm2DONZ1iwuEmryRt6YuzvMqpThOiSVP7geVqUdzjo/bjkXAYT0HdNlJIeEB6D3FAZ7l3yCJh8uKdU4M9Co4XHMwBmKLpNpYK00lGs50AY9T6FlGR9kUuSWqp9laNm9bvDr8KDKfzcYAbtYRrmHIVc1o=----ATTACHMENT:----NTEyNDQzNDQ1NTExMzA4NyA3MTU2NDMwMzI1MTI5MjAgNzcxMTY3MjQ3NDE0MDI5NA==