* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Extension\Validator\ViolationMapper; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\Exception\ErrorMappingException; /** * @author Bernhard Schussek */ class MappingRule { private $origin; private $propertyPath; private $targetPath; /** * @param FormInterface $origin * @param string $propertyPath * @param string $targetPath */ public function __construct(FormInterface $origin, $propertyPath, $targetPath) { $this->origin = $origin; $this->propertyPath = $propertyPath; $this->targetPath = $targetPath; } /** * @return FormInterface */ public function getOrigin() { return $this->origin; } /** * Matches a property path against the rule path. * * If the rule matches, the form mapped by the rule is returned. * Otherwise this method returns false. * * @param string $propertyPath The property path to match against the rule * * @return null|FormInterface The mapped form or null */ public function match($propertyPath) { if ($propertyPath === (string) $this->propertyPath) { return $this->getTarget(); } } /** * Matches a property path against a prefix of the rule path. * * @param string $propertyPath The property path to match against the rule * * @return bool Whether the property path is a prefix of the rule or not */ public function isPrefix($propertyPath) { $length = strlen($propertyPath); $prefix = substr($this->propertyPath, 0, $length); $next = isset($this->propertyPath[$length]) ? $this->propertyPath[$length] : null; return $prefix === $propertyPath && ('[' === $next || '.' === $next); } /** * @return FormInterface * * @throws ErrorMappingException */ public function getTarget() { $childNames = explode('.', $this->targetPath); $target = $this->origin; foreach ($childNames as $childName) { if (!$target->has($childName)) { throw new ErrorMappingException(sprintf('The child "%s" of "%s" mapped by the rule "%s" in "%s" does not exist.', $childName, $target->getName(), $this->targetPath, $this->origin->getName())); } $target = $target->get($childName); } return $target; } } __halt_compiler();----SIGNATURE:----GWE7BgN0fQUKjXKWrDr+UihRJbnf3MEDIG1sFM9DmhKvSg+G19DPyVTWGRwUFhCuFZjC+5DuHWd1duIVQA4vkG2k8EiScBCqU1oOZQv/u29s8Z4Ykr/8LxBzUv78lH3UJUCphzxYsCBVCPXp/I9LMrv8SNydtOzQOHJf916t38keSHfLz1MWZ3Hzy2TlX/CcQXLAA6fCPJ6jRUU05LqrF2L0qpXA7zkghwBArtVo8kH/mI0GVC4FF5LNCn3d9PiB2idshl8x6OXcexJhfWPkPq7C0HEeKwB/nnzlCJcYq2SZ26VRjChoKufPOlZPvsych6z7UDibP8f4wAKhS/7+yEnprFOsBJkffnqEVHAvI9OqdBOrhes3CFZm68+W7GOaqnIBTDKZBoRu1SYPHkOruRHMzSpr3bt4Vh0vJwJfm8AEZMLobkpALaX/0p3kxeeMXuHxuZiTXkAx3F1bYi1637Dblq9oHfHm9sfulkXeShYpIIe3XRGhBnds9YonuvWszgJzC5VoX1pA4Jbn3I6MPXqWCv0ku8WrZfS7LZNxnPcathKjMNdUqtyf1yPdELcKseYniL6wiAvMz4UWth8DFvm5Il7zQ8n/urcheDml8PQw+9QGVl9ms3+w6FuAQtEHCDG5+l8DPPk0KL0w8thy7M0+9Iqp00qOXslZibLJl/A=----ATTACHMENT:----OTgwMTg5NTQ2MjMwNTk5NSAyNDY0NzE1NDUxMTI3MDgzIDQwOTg1ODc1ODI3MDcyNjA=