本文整理汇总了PHP中Symfony\Component\Validator\Mapping\ClassMetadata::getPropertyMetadata方法的典型用法代码示例。如果您正苦于以下问题:PHP ClassMetadata::getPropertyMetadata方法的具体用法?PHP ClassMetadata::getPropertyMetadata怎么用?PHP ClassMetadata::getPropertyMetadata使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symfony\Component\Validator\Mapping\ClassMetadata
的用法示例。
在下文中一共展示了ClassMetadata::getPropertyMetadata方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testValidatePropertyValueWithClassName
public function testValidatePropertyValueWithClassName()
{
$callback1 = function ($value, ExecutionContextInterface $context) {
$propertyMetadatas = $this->metadata->getPropertyMetadata('firstName');
$this->assertSame($this::ENTITY_CLASS, $context->getClassName());
$this->assertSame('firstName', $context->getPropertyName());
$this->assertSame('', $context->getPropertyPath());
$this->assertSame('Group', $context->getGroup());
$this->assertSame($propertyMetadatas[0], $context->getMetadata());
$this->assertSame('Bernhard', $context->getRoot());
$this->assertSame('Bernhard', $context->getValue());
$this->assertSame('Bernhard', $value);
$context->addViolation('Message %param%', array('%param%' => 'value'));
};
$callback2 = function ($value, ExecutionContextInterface $context) {
$context->addViolation('Other violation');
};
$this->metadata->addPropertyConstraint('firstName', new Callback(array('callback' => $callback1, 'groups' => 'Group')));
$this->metadata->addPropertyConstraint('lastName', new Callback(array('callback' => $callback2, 'groups' => 'Group')));
$violations = $this->validatePropertyValue(self::ENTITY_CLASS, 'firstName', 'Bernhard', 'Group');
/** @var ConstraintViolationInterface[] $violations */
$this->assertCount(1, $violations);
$this->assertSame('Message value', $violations[0]->getMessage());
$this->assertSame('Message %param%', $violations[0]->getMessageTemplate());
$this->assertSame(array('%param%' => 'value'), $violations[0]->getParameters());
$this->assertSame('', $violations[0]->getPropertyPath());
$this->assertSame('Bernhard', $violations[0]->getRoot());
$this->assertSame('Bernhard', $violations[0]->getInvalidValue());
$this->assertNull($violations[0]->getPlural());
$this->assertNull($violations[0]->getCode());
}
示例2: mergeConstraints
/**
* 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->getPropertyMetadata($property) as $member) {
$member = clone $member;
foreach ($member->getConstraints() as $constraint) {
$constraint->addImplicitGroupName($this->getDefaultGroup());
}
$this->addPropertyMetadata($member);
if ($member instanceof MemberMetadata && !$member->isPrivate($this->name)) {
$property = $member->getPropertyName();
if ($member instanceof PropertyMetadata && !isset($this->properties[$property])) {
$this->properties[$property] = $member;
} elseif ($member instanceof GetterMetadata && !isset($this->getters[$property])) {
$this->getters[$property] = $member;
}
}
}
}
}
示例3: extractPropertyConstraints
/**
* Extracts constraints from the property metaData
*
* @param string $property
* @param ClassMetadata $metaData
* @return array
*/
protected function extractPropertyConstraints($property, ClassMetadata $metaData)
{
$constraints = [];
$propertyName = $this->convertToCamelCase($property);
if ($propertyName) {
$propertyMetaData = $metaData->getPropertyMetadata($propertyName);
if ($propertyMetaData) {
$propertyOptions = array_pop($propertyMetaData);
$constraints = $propertyOptions->getConstraints();
}
}
return $constraints;
}