|
@@ -1,4 +1,5 @@
|
|
<?php
|
|
<?php
|
|
|
|
+
|
|
namespace Qii\Base;
|
|
namespace Qii\Base;
|
|
|
|
|
|
abstract class Request
|
|
abstract class Request
|
|
@@ -33,6 +34,7 @@ abstract class Request
|
|
* @var Qii_Request_Url url
|
|
* @var Qii_Request_Url url
|
|
*/
|
|
*/
|
|
public $url;
|
|
public $url;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 初始化参数,获取链接中对应的参数并存放到$this->params中
|
|
* 初始化参数,获取链接中对应的参数并存放到$this->params中
|
|
*
|
|
*
|
|
@@ -45,26 +47,29 @@ abstract class Request
|
|
$rewriteRule = \Qii::getInstance()->appConfigure(\Qii\Config\Consts::APP_SITE_METHOD);
|
|
$rewriteRule = \Qii::getInstance()->appConfigure(\Qii\Config\Consts::APP_SITE_METHOD);
|
|
$this->url = new \Qii\Request\Url($rewriteRule);
|
|
$this->url = new \Qii\Request\Url($rewriteRule);
|
|
$this->host = IS_CLI ? '' : $_SERVER['HTTP_HOST'];
|
|
$this->host = IS_CLI ? '' : $_SERVER['HTTP_HOST'];
|
|
- $params = (array)$this->url->getParams();
|
|
|
|
- if(count($params) > 0) $this->params = array_merge($this->params, $params);
|
|
|
|
- $routeInfo = $this->url->getPathArgs();
|
|
|
|
- $controller = $this->defaultController();
|
|
|
|
- $action = $this->defaultAction();
|
|
|
|
- if(count($routeInfo) > 1)
|
|
|
|
- {
|
|
|
|
- $action = array_pop($routeInfo);
|
|
|
|
- $controller = join("\\", $routeInfo);
|
|
|
|
- }
|
|
|
|
- else if(count($routeInfo) == 1 && !empty($routeInfo[0])) {
|
|
|
|
- $controller = $routeInfo[0];
|
|
|
|
- }
|
|
|
|
|
|
+ $params = (array)$this->url->request->params();
|
|
|
|
+ if (count($params) > 0) $this->params = array_merge($this->params, $params);
|
|
|
|
+ $routeInfo = $this->url->request->getPathArgs();
|
|
|
|
+ $controller = $this->defaultController();
|
|
|
|
+ $action = $this->defaultAction();
|
|
|
|
+ //cli 模式处理
|
|
|
|
+ if(IS_CLI) {
|
|
|
|
+ $routeInfo = $this->url->request->getCliPathArgs();
|
|
|
|
+ }
|
|
|
|
+ if (count($routeInfo) > 1) {
|
|
|
|
+ $action = array_pop($routeInfo);
|
|
|
|
+ $controller = join("\\", $routeInfo);
|
|
|
|
+ } else if (count($routeInfo) == 1 && !empty($routeInfo[0])) {
|
|
|
|
+ $controller = $routeInfo[0];
|
|
|
|
+ }
|
|
//处理url中的数据
|
|
//处理url中的数据
|
|
- if(ucwords($rewriteRule) == 'Short'){
|
|
|
|
|
|
+ if (ucwords($rewriteRule) == 'Short') {
|
|
$this->setControllerName($controller);
|
|
$this->setControllerName($controller);
|
|
$this->setActionName($action);
|
|
$this->setActionName($action);
|
|
}
|
|
}
|
|
return $this;
|
|
return $this;
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 获取POST数据
|
|
* 获取POST数据
|
|
*/
|
|
*/
|
|
@@ -72,6 +77,7 @@ abstract class Request
|
|
{
|
|
{
|
|
return call_user_func_array(array($this->url, 'post'), func_get_args());
|
|
return call_user_func_array(array($this->url, 'post'), func_get_args());
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 默认controller
|
|
* 默认controller
|
|
*/
|
|
*/
|
|
@@ -79,6 +85,7 @@ abstract class Request
|
|
{
|
|
{
|
|
return \Qii\Config\Register::get(\Qii\Config\Consts::APP_DEFAULT_CONTROLLER, 'index');
|
|
return \Qii\Config\Register::get(\Qii\Config\Consts::APP_DEFAULT_CONTROLLER, 'index');
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 默认action
|
|
* 默认action
|
|
*/
|
|
*/
|
|
@@ -98,7 +105,7 @@ abstract class Request
|
|
public function redirect($url)
|
|
public function redirect($url)
|
|
{
|
|
{
|
|
ob_clean();
|
|
ob_clean();
|
|
- header('Location:'. $url);
|
|
|
|
|
|
+ header('Location:' . $url);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -524,6 +531,7 @@ abstract class Request
|
|
}
|
|
}
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 是否需要转发
|
|
* 是否需要转发
|
|
*/
|
|
*/
|
|
@@ -531,6 +539,7 @@ abstract class Request
|
|
{
|
|
{
|
|
return $this->forward;
|
|
return $this->forward;
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 设置是否需要转发
|
|
* 设置是否需要转发
|
|
* @param bool $flag
|
|
* @param bool $flag
|
|
@@ -549,16 +558,16 @@ abstract class Request
|
|
* __setbaseUri
|
|
* __setbaseUri
|
|
*
|
|
*
|
|
* @param string $baseUri
|
|
* @param string $baseUri
|
|
- * @param string $request_uri
|
|
|
|
|
|
+ * @param string $requestUri
|
|
* @return boolean
|
|
* @return boolean
|
|
*/
|
|
*/
|
|
- protected function _setbaseUri($baseUri, $request_uri = null)
|
|
|
|
|
|
+ protected function _setBaseUri($baseUri, $requestUri = null)
|
|
{
|
|
{
|
|
if ($baseUri && is_string($baseUri)) {
|
|
if ($baseUri && is_string($baseUri)) {
|
|
$this->_baseUri = $baseUri;
|
|
$this->_baseUri = $baseUri;
|
|
|
|
|
|
return true;
|
|
return true;
|
|
- } elseif ($request_uri && is_string($request_uri)) {
|
|
|
|
|
|
+ } elseif ($requestUri && is_string($requestUri)) {
|
|
$scriptFileName = $this->getServer('SCRIPT_FILENAME');
|
|
$scriptFileName = $this->getServer('SCRIPT_FILENAME');
|
|
|
|
|
|
do {
|
|
do {
|
|
@@ -566,21 +575,21 @@ abstract class Request
|
|
$fileName = basename($scriptFileName, \Qii::getInstance()->appConfigure('ext', '.php'));
|
|
$fileName = basename($scriptFileName, \Qii::getInstance()->appConfigure('ext', '.php'));
|
|
$fileNameLen = strlen($fileName);
|
|
$fileNameLen = strlen($fileName);
|
|
|
|
|
|
- $script_name = $this->getServer('SCRIPT_NAME');
|
|
|
|
- if ($script_name && is_string($script_name)) {
|
|
|
|
- $script = basename($script_name);
|
|
|
|
|
|
+ $scriptName = $this->getServer('SCRIPT_NAME');
|
|
|
|
+ if ($scriptName && is_string($scriptName)) {
|
|
|
|
+ $script = basename($scriptName);
|
|
|
|
|
|
if (strncmp($fileName, $script, $fileNameLen) == 0) {
|
|
if (strncmp($fileName, $script, $fileNameLen) == 0) {
|
|
- $basename = $script_name;
|
|
|
|
|
|
+ $basename = $scriptName;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- $phpself_name = $this->getServer('PHP_SELF');
|
|
|
|
- if ($phpself_name && is_string($phpself_name)) {
|
|
|
|
- $phpself = basename($phpself_name);
|
|
|
|
- if (strncmp($fileName, $phpself, $fileNameLen) == 0) {
|
|
|
|
- $basename = $phpself_name;
|
|
|
|
|
|
+ $phpSelfName = $this->getServer('PHP_SELF');
|
|
|
|
+ if ($phpSelfName && is_string($phpSelfName)) {
|
|
|
|
+ $phpSelf = basename($phpSelfName);
|
|
|
|
+ if (strncmp($fileName, $phpSelf, $fileNameLen) == 0) {
|
|
|
|
+ $basename = $phpSelfName;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -596,14 +605,14 @@ abstract class Request
|
|
}
|
|
}
|
|
} while (0);
|
|
} while (0);
|
|
|
|
|
|
- if ($basename && strstr($request_uri, $basename) == $request_uri) {
|
|
|
|
|
|
+ if ($basename && strstr($requestUri, $basename) == $requestUri) {
|
|
$this->_baseUri = rtrim($basename, '/');
|
|
$this->_baseUri = rtrim($basename, '/');
|
|
|
|
|
|
return true;
|
|
return true;
|
|
} elseif ($basename) {
|
|
} elseif ($basename) {
|
|
$dirname = rtrim(dirname($basename), '/');
|
|
$dirname = rtrim(dirname($basename), '/');
|
|
if ($dirname) {
|
|
if ($dirname) {
|
|
- if (strstr($request_uri, $dirname) == $request_uri) {
|
|
|
|
|
|
+ if (strstr($requestUri, $dirname) == $requestUri) {
|
|
$this->_baseUri = $dirname;
|
|
$this->_baseUri = $dirname;
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -618,6 +627,7 @@ abstract class Request
|
|
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 对于不存在的方法默认调用url中的方法
|
|
* 对于不存在的方法默认调用url中的方法
|
|
*/
|
|
*/
|