Abstract Class luya\base\Boot

Inheritanceluya\base\Boot
Subclassesluya\Boot
Available since version1.0.0
Source Code https://github.com/luyadev/luya/blob/master/core/base/Boot.php

LUYA Boot wrapper.

Run a LUYA Application based on the current enviroment which is determined trough get_sapi_name(). To run an application a config file with LUYA configuration must be provided via $configFile property. By default LUYA will try to find the default config ../configs/env.php.

Public Properties

Hide inherited properties

Property Type Description Defined By
$app luya\web\Application|luya\console\Application The application object. luya\base\Boot
$configFile string The path to the config file, which returns an array containing you configuration. luya\base\Boot
$mockOnly boolean When enabled the boot process will not return/echo something, but the variabled will contain the Application object. luya\base\Boot

Public Methods

Hide inherited methods

Method Description Defined By
applicationConsole() Run Cli-Application based on the provided config file. luya\base\Boot
applicationWeb() Run Web-Application based on the provided config file. luya\base\Boot
getBaseYiiFile() Getter method for Yii base file. luya\base\Boot
getConfigArray() Get the config array from the configFile path with the predefined values. luya\base\Boot
getCoreBasePath() Returns the path to luya core files luya\base\Boot
getIsCli() Getter method whether current request is cli or not. luya\base\Boot
getSapiName() Returns the current sapi name in lower case. luya\base\Boot
prependConfigArray() The prependConfigArray will be merged into the config, this way you can prepand config values for a custom Boot class. luya\base\Boot
run() Run the application based on the Sapi Name. luya\base\Boot
setBaseYiiFile() Setter method for the base Yii file. luya\base\Boot
setConfigArray() This method allows you to directly inject a configuration array instead of using the config file method. luya\base\Boot
setIsCli() Setter method for isCli. luya\base\Boot

Constants

Hide inherited constants

Constant Value Description Defined By
VERSION '2.2.1' luya\base\Boot

Property Details

Hide inherited properties

$app public property

The application object.

$configFile public property

The path to the config file, which returns an array containing you configuration.

public string $configFile '../configs/env.php'
$mockOnly public property

When enabled the boot process will not return/echo something, but the variabled will contain the Application object.

public boolean $mockOnly false

Method Details

Hide inherited methods

applicationConsole() public method

Run Cli-Application based on the provided config file.

public string|integer applicationConsole ( )

                public function applicationConsole()
{
    $this->setIsCli(true);
    $config = $this->getConfigArray();
    $config['defaultRoute'] = 'help';
    if (isset($config['components'])) {
        if (isset($config['components']['composition'])) {
            unset($config['components']['composition']);
        }
    }
    
    $this->includeYii();
    $baseUrl = null;
    if (isset($config['consoleBaseUrl'])) {
        $baseUrl = $config['consoleBaseUrl'];
    } elseif (isset($config['consoleHostInfo'])) {
        $baseUrl = '/';
    }
    
    $mergedConfig = ArrayHelper::merge($config, [
        'bootstrap' => ['luya\console\Bootstrap'],
        'components' => [
            'urlManager' => [
                'class' => 'yii\web\UrlManager',
                'enablePrettyUrl' => true,
                'showScriptName' => false,
                'baseUrl' => $baseUrl,
                'hostInfo' => isset($config['consoleHostInfo']) ? $config['consoleHostInfo'] : null,
            ],
        ],
    ]);
    $this->app = new ConsoleApplication($mergedConfig);
    if (!$this->mockOnly) {
        exit($this->app->run());
    }
}

            
applicationWeb() public method

Run Web-Application based on the provided config file.

public string applicationWeb ( )
return string

Returns the Yii Application run() method if mock is disabled. Otherwise returns void

                public function applicationWeb()
{
    $config = $this->getConfigArray();
    $this->includeYii();
    $mergedConfig = ArrayHelper::merge($config, ['bootstrap' => ['luya\web\Bootstrap']]);
    $this->app = new WebApplication($mergedConfig);
    if (!$this->mockOnly) {
        return $this->app->run();
    }
}

            
getBaseYiiFile() public method

Getter method for Yii base file.

public string getBaseYiiFile ( )

                public function getBaseYiiFile()
{
    return $this->_baseYiiFile;
}

            
getConfigArray() public method

Get the config array from the configFile path with the predefined values.

public array getConfigArray ( )
return array

The array which will be injected into the Application Constructor.

throws luya\Exception

Throws exception if the config file does not exists.

                public function getConfigArray()
{
    if ($this->_configArray === null) {
        if (!file_exists($this->configFile)) {
            if (!$this->getIsCli()) {
                throw new Exception("Unable to load the config file '".$this->configFile."'.");
            }
            
            $config = ['id' => 'consoleapp', 'basePath' => dirname(__DIR__)];
        } else {
            $config = require $this->configFile;
        }

        if (!is_array($config)) {
            throw new Exception("config file '".$this->configFile."' found but no array returning.");
        }
        
        // preset the values from the defaultConfigArray
        if (!empty($this->prependConfigArray())) {
            $config = ArrayHelper::merge($config, $this->prependConfigArray());
        }
     
        $this->_configArray = $config;
    }
    return $this->_configArray;
}

            
getCoreBasePath() public method

Returns the path to luya core files

public string getCoreBasePath ( )
return string

The base path to the luya core folder.

                public function getCoreBasePath()
{
    $reflector = new ReflectionClass(get_class($this));
    return dirname($reflector->getFileName());
}

            
getIsCli() public method (available since version 1.0.12)

Getter method whether current request is cli or not.

If not set via setIsCli() the value is determined trough php_sapi_name();

public boolean getIsCli ( )
return boolean

Whether current request is console env or not.

                public function getIsCli()
{
    if ($this->_isCli === null) {
        $this->_isCli = $this->getSapiName() === 'cli';
    }
    return $this->_isCli;
}

            
getSapiName() public method

Returns the current sapi name in lower case.

public string getSapiName ( )
return string

E.g. cli or web

                public function getSapiName()
{
    return strtolower(php_sapi_name());
}

            
prependConfigArray() public method

The prependConfigArray will be merged into the config, this way you can prepand config values for a custom Boot class.

When using prependConfig inside a custom boot class, the custom boot class will not used in the vendor bin file ./vendor/bin/luya, so make sure to generate your own bin file.

public array prependConfigArray ( )

                public function prependConfigArray()
{
    return [];
}

            
run() public method

Run the application based on the Sapi Name.

public luya\web\Application|luya\console\Application run ( )
return luya\web\Application|luya\console\Application

Application objected based on the sapi name.

                public function run()
{
    if ($this->getIsCli()) {
        return $this->applicationConsole();
    }
    return $this->applicationWeb();
}

            
setBaseYiiFile() public method

Setter method for the base Yii file.

Example path to the yii base file:

$boot->setYiiPath(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
public void setBaseYiiFile ( $baseYiiFile )
$baseYiiFile string

The path to the Yii.php file.

                public function setBaseYiiFile($baseYiiFile)
{
    $this->_baseYiiFile = $baseYiiFile;
}

            
setConfigArray() public method

This method allows you to directly inject a configuration array instead of using the config file method.

This method is commonly used when running php unit tests which do not require an additional file.

$app = new Boot();
$app->setConfigArray([
    // ...
]);
public void setConfigArray ( array $config )
$config array

The configuration array for the application.

                public function setConfigArray(array $config)
{
    $this->_configArray = $config;
}

            
setIsCli() public method (available since version 1.0.12)

Setter method for isCli.

public void setIsCli ( $isCli )
$isCli boolean

                public function setIsCli($isCli)
{
    $this->_isCli = $isCli;
}