Scalr\Api\Rest\Application::__construct PHP Method

__construct() public method

Constructor
public __construct ( array $settings = [] )
$settings array optional Application settings
    public function __construct(array $settings = [])
    {
        $this->startTime = microtime(true);
        $this->container = \Scalr::getContainer();
        $this->container->api->settings = new \ArrayObject(array_merge(static::getDefaultSettings(), $settings));
        /* @var $apiContainer \Scalr\DependencyInjection\ApiContainer */
        $this->container->api->setShared('environment', function ($apiContainer) {
            return new AppEnvironment(!empty($apiContainer->settings['environment.mock']) ? $apiContainer->settings['environment.mock'] : null);
        });
        $this->container->api->setShared('router', function ($apiContainer) {
            return new Router();
        });
        $this->container->api->setShared('request', function ($apiContainer) {
            return new Request($apiContainer->environment);
        });
        $this->container->api->setShared('response', function ($apiContainer) {
            return new Response('', 200, ["content-type" => "application/json; charset=utf-8"]);
        });
        $this->container->api->set('controller', function ($apiContainer, array $params = null) {
            $serviceid = 'controller' . (!empty($params[0]) ? '.' . str_replace('\\', '_', ltrim($params[0], '\\')) : '');
            if (!$apiContainer->initialized($serviceid)) {
                $apiContainer->setShared($serviceid, function ($apiContainer) use($params) {
                    $controllerClass = $params[0];
                    $abstractController = 'Scalr\\Api\\Rest\\Controller\\AbstractController';
                    if (!is_readable(SRCPATH . '/' . str_replace('\\', '/', $controllerClass) . '.php')) {
                        $this->notFound();
                    }
                    if (!class_exists($controllerClass) || !is_subclass_of($controllerClass, $abstractController)) {
                        throw new \InvalidArgumentException(sprintf("Controller must be subclass of the '%s' class. '%s' is given.", $abstractController, $controllerClass));
                    }
                    /* @var $controller \Scalr\Api\Rest\Controller\AbstractController */
                    $controller = new $controllerClass();
                    $controller->setContainer($apiContainer->getContainer());
                    $controller->setApplication($this);
                    return $controller;
                });
            }
            return $apiContainer->get($serviceid);
        });
    }

Usage Example

Example #1
0
 /**
  * {@inheritdoc}
  * @see \Scalr\Api\Rest\Application::__construct()
  */
 public function __construct(array $settings = [])
 {
     parent::__construct($settings);
     $cont = $this->getContainer();
     $cont->api->setShared('meta', function ($cont) {
         return new Meta();
     });
 }
All Usage Examples Of Scalr\Api\Rest\Application::__construct