getDefaultProperties(), function ($value) { return $value !== NULL; }); $parsed_values = $this->parse($values); $this->definition = NestedArray::mergeDeepArray([$defaults, $parsed_values], TRUE); } /** * Parses an annotation into its definition. * * @param array $values * The annotation array. * * @return array * The parsed annotation as a definition. */ protected function parse(array $values) { $definitions = []; foreach ($values as $key => $value) { if ($value instanceof AnnotationInterface) { $definitions[$key] = $value->get(); } elseif (is_array($value)) { $definitions[$key] = $this->parse($value); } else { $definitions[$key] = $value; } } return $definitions; } /** * {@inheritdoc} */ public function get() { return $this->definition; } /** * {@inheritdoc} */ public function getProvider() { return isset($this->definition['provider']) ? $this->definition['provider'] : FALSE; } /** * {@inheritdoc} */ public function setProvider($provider) { $this->definition['provider'] = $provider; } /** * {@inheritdoc} */ public function getId() { return $this->definition['id']; } /** * {@inheritdoc} */ public function getClass() { return $this->definition['class']; } /** * {@inheritdoc} */ public function setClass($class) { $this->definition['class'] = $class; } }