generator = $generator; $this->session = $session; } public function build($name, array $options = array()) { $name = implode('', array_map(function ($chunk) { return ucfirst(strtolower($chunk)); }, explode('-', $name))); $class_name = sprintf('%s\\%s', __NAMESPACE__, $name); if (!class_exists($class_name)) { throw new InvalidArgumentException(sprintf('Invalid provider %s', $name)); } return $class_name::create($this->generator, $this->session, $options); } }