protected function validate(PropertyMetadata $metadata, $name, &$value) { if (!$metadata->isValid($value)) { $class = get_class($this); throw new InvalidArgumentException("Value for {$class}::\${$name} property is invalid."); } }