diff --git a/library/think/App.php b/library/think/App.php index 78989242..0bc19a86 100644 --- a/library/think/App.php +++ b/library/think/App.php @@ -41,27 +41,27 @@ class App /** * @var bool 应用调试模式 - */ + */ public static $debug = true; /** * @var string 应用类库命名空间 - */ + */ public static $namespace = 'app'; /** * @var bool 应用类库后缀 - */ + */ public static $suffix = false; /** * @var bool 应用路由检测 - */ + */ protected static $routeCheck; /** * @var bool 严格路由检测 - */ + */ protected static $routeMust; /** @@ -108,7 +108,7 @@ class App break; case 'module': // 模块/控制器/操作 - $data = self::module($dispatch['module'], $config, isset($dispatch['convert']) ? $dispatch['convert'] : null ); + $data = self::module($dispatch['module'], $config, isset($dispatch['convert']) ? $dispatch['convert'] : null); break; case 'controller': // 执行控制器操作 @@ -136,11 +136,11 @@ class App Hook::listen('app_end', $data); // 清空类的实例化 Loader::clearInstance(); - + // 输出数据到客户端 if ($data instanceof Response) { return $data; - } elseif(!is_null($data)) { + } elseif (!is_null($data)) { // 默认自动识别响应输出类型 $isAjax = $request->isAjax(); $type = $isAjax ? Config::get('default_ajax_return') : Config::get('default_return_type'); @@ -222,7 +222,7 @@ class App } } // 全局过滤 - array_walk_recursive($args, [Request::instance(),'filterExp']); + array_walk_recursive($args, [Request::instance(), 'filterExp']); } return $args; } @@ -243,7 +243,7 @@ class App if ($config['app_multi_module']) { // 多模块部署 $module = strip_tags(strtolower($result[0] ?: $config['default_module'])); - $bind = Route::bind('module'); + $bind = Route::getBind('module'); $available = false; if ($bind) { // 绑定模块 @@ -270,7 +270,7 @@ class App App::$modulePath = APP_PATH . ($module ? $module . DS : ''); // 是否自动转换控制器和操作名 - $convert = is_bool($convert) ? $convert : $config['url_convert']; + $convert = is_bool($convert) ? $convert : $config['url_convert']; // 获取控制器名 $controller = strip_tags($result[1] ?: $config['default_controller']); $controller = $convert ? strtolower($controller) : $controller; @@ -327,17 +327,17 @@ class App { if (empty(self::$init)) { // 初始化应用 - $config = self::init(); - self::$suffix = $config['class_suffix']; - + $config = self::init(); + self::$suffix = $config['class_suffix']; + // 应用调试模式 - self::$debug = Config::get('app_debug'); + self::$debug = Config::get('app_debug'); if (!self::$debug) { ini_set('display_errors', 'Off'); } - + // 应用命名空间 - self::$namespace = $config['app_namespace']; + self::$namespace = $config['app_namespace']; Loader::addNamespace($config['app_namespace'], APP_PATH); if (!empty($config['root_namespace'])) { Loader::addNamespace($config['root_namespace']); @@ -364,7 +364,6 @@ class App return self::$init; } - /** * 初始化应用或模块 * @access public @@ -432,14 +431,14 @@ class App { // 检测URL禁用后缀 if ($config['url_deny_suffix'] && preg_match('/\.(' . $config['url_deny_suffix'] . ')$/i', $request->pathinfo())) { - throw new Exception('url suffix deny:'.$request->ext()); + throw new Exception('url suffix deny:' . $request->ext()); } $path = $request->path(); $depr = $config['pathinfo_depr']; $result = false; // 路由检测 - $check = !is_null(self::$routeCheck) ? self::$routeCheck : $config['url_route_on']; + $check = !is_null(self::$routeCheck) ? self::$routeCheck : $config['url_route_on']; if ($check) { // 开启路由 if (!empty($config['route'])) { diff --git a/library/think/Route.php b/library/think/Route.php index 676263e0..e5711c33 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -123,19 +123,26 @@ class Route } /** - * 设置和读取路由绑定 + * 设置路由绑定 * @access public - * @param string $type 请求类型 * @param mixed $bind 绑定信息 + * @param string $type 绑定类型 默认为module * @return mixed */ - public static function bind($type, $bind = '') + public static function bind($bind, $type = 'module') { - if ('' == $bind) { - return isset(self::$bind[$type]) ? self::$bind[$type] : null; - } else { - self::$bind = ['type' => $type, $type => $bind]; - } + self::$bind = ['type' => $type, $type => $bind]; + } + + /** + * 读取路由绑定 + * @access public + * @param string $type 绑定类型 + * @return mixed + */ + public static function getBind($type) + { + return isset(self::$bind[$type]) ? self::$bind[$type] : null; } /** diff --git a/library/think/Url.php b/library/think/Url.php index 9a840b50..6c938c04 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -78,9 +78,9 @@ class Url } // 检测URL绑定 - $type = Route::bind('type'); + $type = Route::getBind('type'); if ($type) { - $bind = Route::bind($type); + $bind = Route::getBind($type); if (0 === strpos($url, $bind)) { $url = substr($url, strlen($bind) + 1); } diff --git a/library/think/template/taglib/Cx.php b/library/think/template/taglib/Cx.php index 021178b3..7336db86 100644 --- a/library/think/template/taglib/Cx.php +++ b/library/think/template/taglib/Cx.php @@ -506,7 +506,7 @@ class Cx extends Taglib // 文件方式导入 $array = explode(',', $file); foreach ($array as $val) { - $type = $reset = strtolower(substr(strrchr($val, '.'), 1)); + $type = strtolower(substr(strrchr($val, '.'), 1)); switch ($type) { case 'js': $parseStr .= ''; diff --git a/tests/thinkphp/library/think/routeTest.php b/tests/thinkphp/library/think/routeTest.php index 1ebc89d6..751486f0 100644 --- a/tests/thinkphp/library/think/routeTest.php +++ b/tests/thinkphp/library/think/routeTest.php @@ -16,18 +16,18 @@ namespace tests\thinkphp\library\think; +use think\Config; use think\Request; use think\Route; -use think\Config; class routeTest extends \PHPUnit_Framework_TestCase { protected function setUp() { - Config::set('app_multi_module',true); + Config::set('app_multi_module', true); } - + public function testRegister() { $request = Request::instance(); @@ -48,19 +48,19 @@ class routeTest extends \PHPUnit_Framework_TestCase $request = Request::instance(); Route::resource('res', 'index/blog'); Route::resource(['res' => ['index/blog']]); - $result = Route::check($request, 'res'); + $result = Route::check($request, 'res'); $this->assertEquals(['index', 'blog', 'index'], $result['module']); - $result = Route::check($request, 'res/create'); + $result = Route::check($request, 'res/create'); $this->assertEquals(['index', 'blog', 'create'], $result['module']); - $result = Route::check($request, 'res/8'); + $result = Route::check($request, 'res/8'); $this->assertEquals(['index', 'blog', 'read'], $result['module']); - $result = Route::check($request, 'res/8/edit'); + $result = Route::check($request, 'res/8/edit'); $this->assertEquals(['index', 'blog', 'edit'], $result['module']); Route::resource('blog.comment', 'index/comment'); - $result = Route::check($request, 'blog/8/comment/10'); + $result = Route::check($request, 'blog/8/comment/10'); $this->assertEquals(['index', 'comment', 'read'], $result['module']); - $result = Route::check($request, 'blog/8/comment/10/edit'); + $result = Route::check($request, 'blog/8/comment/10/edit'); $this->assertEquals(['index', 'comment', 'edit'], $result['module']); } @@ -83,7 +83,7 @@ class routeTest extends \PHPUnit_Framework_TestCase $request = Request::instance(); Route::map('hello', 'index/hello'); $this->assertEquals('index/hello', Route::map('hello')); - $result = Route::check($request, 'hello'); + $result = Route::check($request, 'hello'); $this->assertEquals(['index', 'hello', null], $result['module']); } @@ -91,13 +91,13 @@ class routeTest extends \PHPUnit_Framework_TestCase { $request = Request::instance(); Route::get('hello-', 'index/hello', [], ['name' => '\w+']); - $result = Route::check($request, 'hello-thinkphp'); + $result = Route::check($request, 'hello-thinkphp'); $this->assertEquals([null, 'index', 'hello'], $result['module']); Route::get('hello-', 'index/hello', [], ['name' => '\w+', 'id' => '\d+']); - $result = Route::check($request, 'hello-thinkphp2016'); + $result = Route::check($request, 'hello-thinkphp2016'); $this->assertEquals([null, 'index', 'hello'], $result['module']); Route::get('hello-/[:id]', 'index/hello', [], ['name' => '\w+', 'id' => '\d+']); - $result = Route::check($request, 'hello-thinkphp/2016'); + $result = Route::check($request, 'hello-thinkphp/2016'); $this->assertEquals([null, 'index', 'hello'], $result['module']); } @@ -124,9 +124,9 @@ class routeTest extends \PHPUnit_Framework_TestCase $request = Request::instance(); $this->assertEquals(false, Route::check($request, 'test/thinkphp')); $this->assertEquals(false, Route::check($request, 'blog/thinkphp')); - $result = Route::check($request, 'blog/5'); + $result = Route::check($request, 'blog/5'); $this->assertEquals([null, 'blog', 'read'], $result['module']); - $result = Route::check($request, 'hello/thinkphp/abc/test'); + $result = Route::check($request, 'hello/thinkphp/abc/test'); $this->assertEquals([null, 'index', 'hello'], $result['module']); } @@ -136,11 +136,11 @@ class routeTest extends \PHPUnit_Framework_TestCase Route::pattern(['id' => '\d+', 'name' => '\w{6,25}']); Route::group('group', [':id' => 'index/hello', ':name' => 'index/say']); $this->assertEquals(false, Route::check($request, 'empty/think')); - $result = Route::check($request, 'group/think'); + $result = Route::check($request, 'group/think'); $this->assertEquals([null, 'index', 'say'], $result['module']); - $result = Route::check($request, 'group/10'); + $result = Route::check($request, 'group/10'); $this->assertEquals([null, 'index', 'hello'], $result['module']); - $result = Route::check($request, 'group/thinkphp'); + $result = Route::check($request, 'group/thinkphp'); $this->assertEquals([null, 'index', 'say'], $result['module']); } @@ -151,9 +151,9 @@ class routeTest extends \PHPUnit_Framework_TestCase Route::get('blog/:id', 'blog/read', [], ['id' => '\d+']); $this->assertEquals(false, Route::check($request, 'test/thinkphp')); $this->assertEquals(false, Route::check($request, 'blog/thinkphp')); - $result = Route::check($request, 'hello/thinkphp'); + $result = Route::check($request, 'hello/thinkphp'); $this->assertEquals([null, 'index', 'hello'], $result['module']); - $result = Route::check($request, 'blog/5'); + $result = Route::check($request, 'blog/5'); $this->assertEquals([null, 'blog', 'read'], $result['module']); } @@ -183,18 +183,18 @@ class routeTest extends \PHPUnit_Framework_TestCase public function testBind() { $request = Request::instance(); - Route::bind('module', 'index/blog'); - $result = Route::parseUrl('read/10'); + Route::bind('index/blog'); + $result = Route::parseUrl('read/10'); $this->assertEquals(['index', 'blog', 'read'], $result['module']); Route::get('index/blog/:id', 'index/blog/read'); - $result = Route::check($request, '10'); + $result = Route::check($request, '10'); $this->assertEquals(['index', 'blog', 'read'], $result['module']); - Route::bind('namespace', '\app\index\controller'); + Route::bind('\app\index\controller', 'namespace'); $this->assertEquals(['type' => 'method', 'method' => ['\app\index\controller\blog', 'read'], 'params' => []], Route::check($request, 'blog/read')); - Route::bind('class', '\app\index\controller\blog'); + Route::bind('\app\index\controller\blog', 'class'); $this->assertEquals(['type' => 'method', 'method' => ['\app\index\controller\blog', 'read'], 'params' => []], Route::check($request, 'read')); } @@ -204,24 +204,24 @@ class routeTest extends \PHPUnit_Framework_TestCase Route::domain('subdomain.thinkphp.cn', 'sub?abc=test&status=1'); Route::checkDomain($request); $this->assertEquals('sub?abc=test&status=1', Route::domain('subdomain.thinkphp.cn')); - $this->assertEquals('sub', Route::bind('module')); + $this->assertEquals('sub', Route::getbind('module')); $this->assertEquals('test', $_GET['abc']); $this->assertEquals(1, $_GET['status']); Route::domain('subdomain.thinkphp.cn', function () {return ['type' => 'module', 'module' => 'sub2'];}); Route::checkDomain($request); - $this->assertEquals('sub2', Route::bind('module')); + $this->assertEquals('sub2', Route::getbind('module')); Route::domain('subdomain.thinkphp.cn', '\app\index\controller'); Route::checkDomain($request); - $this->assertEquals('\app\index\controller', Route::bind('namespace')); + $this->assertEquals('\app\index\controller', Route::getbind('namespace')); Route::domain('subdomain.thinkphp.cn', '@\app\index\controller\blog'); Route::checkDomain($request); - $this->assertEquals('\app\index\controller\blog', Route::bind('class')); + $this->assertEquals('\app\index\controller\blog', Route::getbind('class')); Route::domain('subdomain.thinkphp.cn', '[sub3]'); Route::checkDomain($request); - $this->assertEquals('sub3', Route::bind('group')); + $this->assertEquals('sub3', Route::getbind('group')); } }