private function internalSetValue(PropertyMetadata $metadata, $name, $value)
{
if (!isset($this->validated[$name])) {
$this->initProperty($metadata, $name);
}
if ($this->data[$name] instanceof IPropertyInjection) {
$this->data[$name]->setInjectedValue($value);
return;
}
if ($metadata->hasSetter) {
$value = call_user_func([$this, $metadata->hasSetter], $value, $metadata);
if ($value === IEntity::SKIP_SET_VALUE) {
$this->modified[$name] = true;
return;
}
}
$this->validate($metadata, $name, $value);
$this->data[$name] = $value;
$this->modified[$name] = true;
}