By andypost on
Change record status:
Draft (View all draft change records)
Project:
Introduced in branch:
11.1.x
Introduced in version:
11.1.0
Issue links:
Description:
The \Drupal\Core\TypedData\DataDefinition and child classes TypedData objects should not be accessed via ArrayAccess methods
Accessing following methods directly or indirectly will throw deprecation
- \Drupal\Core\TypedData\DataDefinition::offsetExists()
- \Drupal\Core\TypedData\DataDefinition::offsetGet()
- \Drupal\Core\TypedData\DataDefinition::offsetSet()
- \Drupal\Core\TypedData\DataDefinition::offsetUnset()
Custom and contrib code could use following replacements
Before
$label = $definition['label']
$array = $definition['mapping'][$key] ?? [];
$definition['mapping'] = $array;
unset($definition['mapping']);
After
$label = $definition->getLabel();
$array = $definition->toArray()['mapping'][$key] ?? [];
$definition->setRawDefinition('mapping', $mapping);
$array = $definition->toArray();
unset($array['mapping']);
$definition = new $definition::class($array);
Impacts:
Module developers
Themers
Site templates, recipes and distribution developers