<?php namespace Modules\Common\Repository\Options; use Exception; use Illuminate\Support\Str; class Factory { /** * make * @param string $optionName * @return OptionInterface * @throws Exception */ public function make(string $optionName): OptionInterface { $className = __NAMESPACE__.'\\'.Str::of($optionName)->ucfirst()->toString(); $class = new $className(); if (! $class instanceof OptionInterface) { throw new Exception('option must be implement [OptionInterface]'); } return $class; } }