ManaPHP\Application::__construct PHP Method

__construct() public method

Application constructor.
public __construct ( Loader $loader, ManaPHP\DiInterface $dependencyInjector = null )
$loader Loader
$dependencyInjector ManaPHP\DiInterface
    public function __construct($loader, $dependencyInjector = null)
    {
        $this->_dependencyInjector = $dependencyInjector ?: new FactoryDefault();
        $this->_dependencyInjector->setShared('loader', $loader);
        $this->_dependencyInjector->setShared('application', $this);
        $class = str_replace('\\', '/', get_called_class());
        foreach (get_included_files() as $file) {
            if (DIRECTORY_SEPARATOR === '\\') {
                $file = str_replace('\\', '/', $file);
            }
            if (strpos($file, $class . '.php') !== false) {
                $app_dir = dirname($file);
                $app_ns = basename($app_dir);
                $this->alias->set('@app', $app_dir);
                $this->alias->set('@ns.app', $app_ns);
                $this->alias->set('@data', dirname($app_dir) . '/Data');
                $this->loader->registerNamespaces([$app_ns => $app_dir]);
                break;
            }
        }
    }

Usage Example

Example #1
0
 /**
  * Application constructor.
  *
  * @param \ManaPHP\Loader      $loader
  * @param \ManaPHP\DiInterface $dependencyInjector
  */
 public function __construct($loader, $dependencyInjector = null)
 {
     parent::__construct($loader, $dependencyInjector);
     $this->_dependencyInjector->setShared('console', 'ManaPHP\\Cli\\Console');
     $this->_dependencyInjector->setShared('arguments', 'ManaPHP\\Cli\\Arguments');
     $this->_dependencyInjector->setShared('cliRouter', 'ManaPHP\\Cli\\Router');
 }