You are here

public function ArrayElement::get in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Config/Schema/ArrayElement.php \Drupal\Core\Config\Schema\ArrayElement::get()

Gets a contained typed configuration element.

Parameters

$name: The name of the property to get; e.g., 'title' or 'name'. Nested elements can be get using multiple dot delimited names, for example, 'page.front'.

Return value

\Drupal\Core\TypedData\TypedDataInterface The property object.

Throws

\InvalidArgumentException If an invalid property name is given.

Overrides TypedConfigInterface::get

1 call to ArrayElement::get()
ArrayElement::getProperties in core/lib/Drupal/Core/Config/Schema/ArrayElement.php
Gets an array of property objects.

File

core/lib/Drupal/Core/Config/Schema/ArrayElement.php, line 56

Class

ArrayElement
Defines a generic configuration element that contains multiple properties.

Namespace

Drupal\Core\Config\Schema

Code

public function get($name) {
  $parts = explode('.', $name);
  $root_key = array_shift($parts);
  $elements = $this
    ->getElements();
  if (isset($elements[$root_key])) {
    $element = $elements[$root_key];

    // If $property_name contained a dot recurse into the keys.
    while ($element && ($key = array_shift($parts)) !== NULL) {
      if ($element instanceof TypedConfigInterface) {
        $element = $element
          ->get($key);
      }
      else {
        $element = NULL;
      }
    }
  }
  if (isset($element)) {
    return $element;
  }
  else {
    throw new \InvalidArgumentException("The configuration property {$name} doesn't exist.");
  }
}