Abstract Class luya\base\Boot
| Inheritance | luya\base\Boot |
|---|---|
| Subclasses | luya\Boot |
| Available since version | 1.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
| 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
| 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
| Constant | Value | Description | Defined By |
|---|---|---|---|
| VERSION | '2.2.1' | luya\base\Boot |
Property Details
The application object.
The path to the config file, which returns an array containing you configuration.
Method Details
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());
}
}
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();
}
}
Getter method for Yii base file.
| public string getBaseYiiFile ( ) |
public function getBaseYiiFile()
{
return $this->_baseYiiFile;
}
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;
}
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());
}
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;
}
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());
}
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 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();
}
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;
}
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;
}