|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @link http://www.yiiframework.com/
|
|
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
|
|
* @license http://www.yiiframework.com/license/
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace yii\web;
|
|
|
|
|
|
|
|
use yii\base\InvalidParamException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Application is the base class for all application classes.
|
|
|
|
*
|
|
|
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
|
|
* @since 2.0
|
|
|
|
*/
|
|
|
|
class Application extends \yii\base\Application
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @var string the default route of this application. Defaults to 'site'.
|
|
|
|
*/
|
|
|
|
public $defaultRoute = 'site';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets default path aliases.
|
|
|
|
*/
|
|
|
|
public function registerDefaultAliases()
|
|
|
|
{
|
|
|
|
parent::registerDefaultAliases();
|
|
|
|
\Yii::$aliases['@webroot'] = dirname($_SERVER['SCRIPT_FILENAME']);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Processes the request.
|
|
|
|
* @return integer the exit status of the controller action (0 means normal, non-zero values mean abnormal)
|
|
|
|
*/
|
|
|
|
public function processRequest()
|
|
|
|
{
|
|
|
|
list ($route, $params) = $this->getRequest()->resolve();
|
|
|
|
return $this->runAction($route, $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the request component.
|
|
|
|
* @return Request the request component
|
|
|
|
*/
|
|
|
|
public function getRequest()
|
|
|
|
{
|
|
|
|
return $this->getComponent('request');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the response component.
|
|
|
|
* @return Response the response component
|
|
|
|
*/
|
|
|
|
public function getResponse()
|
|
|
|
{
|
|
|
|
return $this->getComponent('response');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the session component.
|
|
|
|
* @return Session the session component
|
|
|
|
*/
|
|
|
|
public function getSession()
|
|
|
|
{
|
|
|
|
return $this->getComponent('session');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the user component.
|
|
|
|
* @return User the user component
|
|
|
|
*/
|
|
|
|
public function getUser()
|
|
|
|
{
|
|
|
|
return $this->getComponent('user');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a URL using the given route and parameters.
|
|
|
|
*
|
|
|
|
* This method first normalizes the given route by converting a relative route into an absolute one.
|
|
|
|
* A relative route is a route without a leading slash. It is considered to be relative to the currently
|
|
|
|
* requested route. If the route is an empty string, it stands for the route of the currently active
|
|
|
|
* [[controller]]. Otherwise, the [[Controller::uniqueId]] will be prepended to the route.
|
|
|
|
*
|
|
|
|
* After normalizing the route, this method calls [[\yii\web\UrlManager::createUrl()]]
|
|
|
|
* to create a relative URL.
|
|
|
|
*
|
|
|
|
* @param string $route the route. This can be either an absolute or a relative route.
|
|
|
|
* @param array $params the parameters (name-value pairs) to be included in the generated URL
|
|
|
|
* @return string the created URL
|
|
|
|
* @throws InvalidParamException if a relative route is given and there is no active controller.
|
|
|
|
* @see createAbsoluteUrl
|
|
|
|
*/
|
|
|
|
public function createUrl($route, $params = array())
|
|
|
|
{
|
|
|
|
if (strncmp($route, '/', 1) !== 0) {
|
|
|
|
// a relative route
|
|
|
|
if ($this->controller !== null) {
|
|
|
|
$route = $route === '' ? $this->controller->route : $this->controller->uniqueId . '/' . $route;
|
|
|
|
} else {
|
|
|
|
throw new InvalidParamException('Relative route cannot be handled because there is no active controller.');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $this->getUrlManager()->createUrl($route, $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates an absolute URL using the given route and parameters.
|
|
|
|
* This method first calls [[createUrl()]] to create a relative URL.
|
|
|
|
* It then prepends [[\yii\web\UrlManager::hostInfo]] to the URL to form an absolute one.
|
|
|
|
* @param string $route the route. This can be either an absolute or a relative route.
|
|
|
|
* See [[createUrl()]] for more details.
|
|
|
|
* @param array $params the parameters (name-value pairs)
|
|
|
|
* @return string the created URL
|
|
|
|
* @see createUrl
|
|
|
|
*/
|
|
|
|
public function createAbsoluteUrl($route, $params = array())
|
|
|
|
{
|
|
|
|
return $this->getUrlManager()->getHostInfo() . $this->createUrl($route, $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Registers the core application components.
|
|
|
|
* @see setComponents
|
|
|
|
*/
|
|
|
|
public function registerCoreComponents()
|
|
|
|
{
|
|
|
|
parent::registerCoreComponents();
|
|
|
|
$this->setComponents(array(
|
|
|
|
'request' => array(
|
|
|
|
'class' => 'yii\web\Request',
|
|
|
|
),
|
|
|
|
'response' => array(
|
|
|
|
'class' => 'yii\web\Response',
|
|
|
|
),
|
|
|
|
'session' => array(
|
|
|
|
'class' => 'yii\web\Session',
|
|
|
|
),
|
|
|
|
'user' => array(
|
|
|
|
'class' => 'yii\web\User',
|
|
|
|
),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
}
|