registry[$name] = $grant; return $this; } public function getGrant(string $name) : GrantAbstract { if (!isset($this->registry[$name])) { $this->registerDefaultGrant($name); } return $this->registry[$name]; } protected function registerDefaultGrant(string $name) : self { $class = \str_replace(' ', '', \ucwords(\str_replace(['-', '_'], ' ', $name))); $class = 'phpOMS\\OAuth2\\Grant\\' . $class; if (!\is_subclass_of($class, GrantAbstract::class)) { throw new \Exception(); } return $this->setGrant($name, new $class()); } }