_registry[$key])) { return $this->_registry[$key]; } return null; } /** * Register a new variable * * @param string $key * @param mixed $value * @param bool $graceful * @return void * @throws \RuntimeException * * @deprecated 102.0.0 */ public function register($key, $value, $graceful = false) { if (isset($this->_registry[$key])) { if ($graceful) { return; } throw new \RuntimeException('Registry key "' . $key . '" already exists'); } $this->_registry[$key] = $value; } /** * Unregister a variable from register by key * * @param string $key * @return void * * @deprecated 102.0.0 */ public function unregister($key) { if (isset($this->_registry[$key])) { if (is_object($this->_registry[$key]) && method_exists($this->_registry[$key], '__destruct') && is_callable([$this->_registry[$key], '__destruct']) ) { $this->_registry[$key]->__destruct(); } unset($this->_registry[$key]); } } /** * Destruct registry items */ public function __destruct() { $keys = array_keys($this->_registry); array_walk($keys, [$this, 'unregister']); } }