public function walkClass(ClassMetadata $metadata, $object, $group, $propertyPath) { $this->context->setCurrentClass($metadata->getClassName()); foreach ($metadata->findConstraints($group) as $constraint) { $this->walkConstraint($constraint, $object, $group, $propertyPath); } if ($object !== null) { foreach ($metadata->getConstrainedProperties() as $property) { $localPropertyPath = empty($propertyPath) ? $property : $propertyPath . '.' . $property; $this->walkProperty($metadata, $property, $object, $group, $localPropertyPath); } } }
/** * Merges the constraints of the given metadata into this object * * @param ClassMetadata $source The source metadata */ public function mergeConstraints(ClassMetadata $source) { foreach ($source->getConstraints() as $constraint) { $this->addConstraint(clone $constraint); } foreach ($source->getConstrainedProperties() as $property) { foreach ($source->getMemberMetadatas($property) as $member) { $member = clone $member; foreach ($member->getConstraints() as $constraint) { $constraint->addImplicitGroupName($this->getShortClassName()); } $this->addMemberMetadata($member); if (!$member->isPrivate()) { $property = $member->getPropertyName(); if ($member instanceof PropertyMetadata && !isset($this->properties[$property])) { $this->properties[$property] = $member; } else { if ($member instanceof GetterMetadata && !isset($this->getters[$property])) { $this->getters[$property] = $member; } } } } } }