|
|
|
@ -67,10 +67,20 @@ class Application extends Module
|
|
|
|
|
* Constructor. |
|
|
|
|
* @param array $config name-value pairs that will be used to initialize the object properties. |
|
|
|
|
* Note that the configuration must contain both [[id]] and [[basePath]]. |
|
|
|
|
* @throws InvalidConfigException if either [[id]] or [[basePath]] configuration is missing. |
|
|
|
|
*/ |
|
|
|
|
public function __construct($config = array()) |
|
|
|
|
{ |
|
|
|
|
Yii::$app = $this; |
|
|
|
|
if (!isset($config['id'])) { |
|
|
|
|
throw new InvalidConfigException('The "id" configuration is required.'); |
|
|
|
|
} |
|
|
|
|
if (isset($config['basePath'])) { |
|
|
|
|
$this->setBasePath($config['basePath']); |
|
|
|
|
unset($config['basePath']); |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidConfigException('The "basePath" configuration is required.'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$this->preInit($config); |
|
|
|
|
|
|
|
|
@ -83,37 +93,24 @@ class Application extends Module
|
|
|
|
|
/** |
|
|
|
|
* Pre-initializes the application. |
|
|
|
|
* This method is called at the beginning of the application constructor. |
|
|
|
|
* When this method is called, none of the application properties are initialized yet. |
|
|
|
|
* The default implementation will initialize a few important properties |
|
|
|
|
* that may be referenced during the initialization of the rest of the properties. |
|
|
|
|
* @param array $config the application configuration |
|
|
|
|
* @throws InvalidConfigException if either [[id]] or [[basePath]] configuration is missing. |
|
|
|
|
*/ |
|
|
|
|
public function preInit($config) |
|
|
|
|
public function preInit(&$config) |
|
|
|
|
{ |
|
|
|
|
if (!isset($config['id'])) { |
|
|
|
|
throw new InvalidConfigException('The "id" configuration is required.'); |
|
|
|
|
} |
|
|
|
|
if (!isset($config['basePath'])) { |
|
|
|
|
throw new InvalidConfigException('The "basePath" configuration is required.'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$this->setBasePath($config['basePath']); |
|
|
|
|
Yii::setAlias('@app', $this->getBasePath()); |
|
|
|
|
unset($config['basePath']); |
|
|
|
|
|
|
|
|
|
if (isset($config['vendor'])) { |
|
|
|
|
$this->setVendorPath($config['vendor']); |
|
|
|
|
if (isset($config['vendorPath'])) { |
|
|
|
|
$this->setVendorPath($config['vendorPath']); |
|
|
|
|
unset($config['vendorPath']); |
|
|
|
|
} else { |
|
|
|
|
// set "@vendor" |
|
|
|
|
$this->getVendorPath(); |
|
|
|
|
} |
|
|
|
|
Yii::setAlias('@vendor', $this->getVendorPath()); |
|
|
|
|
|
|
|
|
|
if (isset($config['runtime'])) { |
|
|
|
|
$this->setRuntimePath($config['runtime']); |
|
|
|
|
unset($config['runtime']); |
|
|
|
|
if (isset($config['runtimePath'])) { |
|
|
|
|
$this->setRuntimePath($config['runtimePath']); |
|
|
|
|
unset($config['runtimePath']); |
|
|
|
|
} else { |
|
|
|
|
// set "@runtime" |
|
|
|
|
$this->getRuntimePath(); |
|
|
|
|
} |
|
|
|
|
Yii::setAlias('@runtime', $this->getRuntimePath()); |
|
|
|
|
|
|
|
|
|
if (isset($config['timeZone'])) { |
|
|
|
|
$this->setTimeZone($config['timeZone']); |
|
|
|
|
unset($config['timeZone']); |
|
|
|
@ -202,7 +199,8 @@ class Application extends Module
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns the directory that stores runtime files. |
|
|
|
|
* @return string the directory that stores runtime files. Defaults to 'protected/runtime'. |
|
|
|
|
* @return string the directory that stores runtime files. |
|
|
|
|
* Defaults to the "runtime" subdirectory under [[basePath]]. |
|
|
|
|
*/ |
|
|
|
|
public function getRuntimePath() |
|
|
|
|
{ |
|
|
|
@ -215,16 +213,11 @@ class Application extends Module
|
|
|
|
|
/** |
|
|
|
|
* Sets the directory that stores runtime files. |
|
|
|
|
* @param string $path the directory that stores runtime files. |
|
|
|
|
* @throws InvalidConfigException if the directory does not exist or is not writable |
|
|
|
|
*/ |
|
|
|
|
public function setRuntimePath($path) |
|
|
|
|
{ |
|
|
|
|
$path = Yii::getAlias($path); |
|
|
|
|
if (is_dir($path) && is_writable($path)) { |
|
|
|
|
$this->_runtimePath = $path; |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidConfigException("Runtime path must be a directory writable by the Web server process: $path"); |
|
|
|
|
} |
|
|
|
|
$this->_runtimePath = Yii::getAlias($path); |
|
|
|
|
Yii::setAlias('@runtime', $this->_runtimePath); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private $_vendorPath; |
|
|
|
@ -232,7 +225,7 @@ class Application extends Module
|
|
|
|
|
/** |
|
|
|
|
* Returns the directory that stores vendor files. |
|
|
|
|
* @return string the directory that stores vendor files. |
|
|
|
|
* Defaults to 'vendor' directory under applications [[basePath]]. |
|
|
|
|
* Defaults to "vendor" directory under [[basePath]]. |
|
|
|
|
*/ |
|
|
|
|
public function getVendorPath() |
|
|
|
|
{ |
|
|
|
@ -249,6 +242,7 @@ class Application extends Module
|
|
|
|
|
public function setVendorPath($path) |
|
|
|
|
{ |
|
|
|
|
$this->_vendorPath = Yii::getAlias($path); |
|
|
|
|
Yii::setAlias('@vendor', $this->_vendorPath); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|