eca-1.0.x-dev/src/Token/ContextDataProvider.php
src/Token/ContextDataProvider.php
<?php namespace Drupal\eca\Token; /** * Contextual data that is made available for any child process. */ class ContextDataProvider implements DataProviderInterface { /** * Stacked context data. * * The most recently added set of data is the first entry of this array. * * @var array */ protected static array $stack = []; /** * {@inheritdoc} */ public function getData(string $key): mixed { foreach (self::$stack as $set) { if (isset($set[$key])) { return $set[$key]; } } return NULL; } /** * {@inheritdoc} */ public function hasData(string $key): bool { return $this->getData($key) !== NULL; } /** * Push a new set of context data. * * @param array &$data * The context data. */ public function push(array &$data): void { array_unshift(self::$stack, $data); } /** * Removes the last added set of context data. */ public function pop(): void { array_shift(self::$stack); } }