. */ namespace SP\Modules\Api\Controllers; use DI\Container; use SP\Core\Context\ApiContext; use SP\Core\Events\EventDispatcher; /** * Class ControllerBase * @package SP\Modules\Api\Controllers */ abstract class ControllerBase { /** * @var Container */ protected $dic; /** * @var string */ protected $controllerName; /** * @var */ protected $actionName; /** * @var ApiContext */ protected $context; /** * @var EventDispatcher */ protected $eventDispatcher; /** * Constructor * * @param Container $container * @param $actionName * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public final function __construct(Container $container, $actionName) { $this->dic = $container; $this->context = $container->get(ApiContext::class); $this->eventDispatcher = $container->get(EventDispatcher::class); $this->controllerName = $this->getControllerName(); $this->actionName = $actionName; if (method_exists($this, 'initialize')) { $this->initialize(); } } /** * @return string */ protected function getControllerName() { $class = static::class; return substr($class, strrpos($class, '\\') + 1, -strlen('Controller')) ?: ''; } }