diff --git a/lang/zh-cn.php b/lang/zh-cn.php index 2e1247f9..778aef4d 100644 --- a/lang/zh-cn.php +++ b/lang/zh-cn.php @@ -59,5 +59,5 @@ return [ 'tag error' => '模板标签错误', 'cache write error' => '缓存写入失败', 'sae mc write error' => 'SAE mc 写入错误', - 'route name not exists' => '路由命名标识不存在', + 'route name not exists' => '路由标识不存在(或参数不够)', ]; diff --git a/library/think/Route.php b/library/think/Route.php index 9cd1837b..a00e56f1 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -138,12 +138,14 @@ class Route /** * 设置路由绑定 * @access public - * @param string $name 路由命名标识 + * @param string|array $name 路由命名标识 数组表示批量设置 * @return array */ public static function name($name = '') { - if ('' === $name) { + if (is_array($name)) { + return self::$name = $name; + } elseif ('' === $name) { return self::$name; } else { return isset(self::$name[$name]) ? self::$name[$name] : null; diff --git a/library/think/Url.php b/library/think/Url.php index 181b3bcf..b2765785 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -22,11 +22,8 @@ class Url /** * URL生成 支持路由反射 - * @param string $url URL表达式, - * 格式:'[模块/控制器/操作]?参数1=值1&参数2=值2...@域名' - * @控制器/操作?参数1=值1&参数2=值2... - * \\命名空间类\\方法?参数1=值1&参数2=值2... - * @param string|array $vars 传入的参数,支持数组和字符串 + * @param string $url 路由地址 + * @param string|array $vars 参数(支持数组和字符串)a=val&b=val2... ['a'=>'val1', 'b'=>'val2'] * @param string|bool $suffix 伪静态后缀,默认为true表示获取配置值 * @param boolean|string $domain 是否显示域名 或者直接传入域名 * @return string @@ -77,7 +74,7 @@ class Url } } if (!empty($rule) && $match = self::getRuleUrl($rule, $vars)) { - // 匹配路由命名标识 快速生成 + // 匹配路由命名标识 $url = $match[0]; if (!empty($match[1])) { $domain = $match[1]; @@ -90,7 +87,7 @@ class Url parse_str($info['query'], $params); $vars = array_merge($params, $vars); } - // 路由不存在 直接解析 + // 路由标识不存在 直接解析 $url = self::parseUrl($url, $domain); } @@ -215,8 +212,7 @@ class Url } else { $domain .= strpos($domain, '.') ? '' : strstr($request->host(), '.'); } - $domain = ($request->isSsl() ? 'https://' : 'http://') . $domain; - return $domain; + return ($request->isSsl() ? 'https://' : 'http://') . $domain; } // 解析URL后缀 diff --git a/tests/thinkphp/library/think/urlTest.php b/tests/thinkphp/library/think/urlTest.php index 69f9be76..94dfc71d 100644 --- a/tests/thinkphp/library/think/urlTest.php +++ b/tests/thinkphp/library/think/urlTest.php @@ -23,6 +23,12 @@ use think\Url; class urlTest extends \PHPUnit_Framework_TestCase { + public function setUp() + { + Route::rules([]); + Route::name([]); + } + public function testBuildModule() { @@ -70,7 +76,6 @@ class urlTest extends \PHPUnit_Framework_TestCase public function testBuildNameRoute() { - Route::rules([]); Route::get(['name', 'blog/:id'], 'index/blog'); $this->assertEquals([['blog/:id', ['id' => 1], null]], Route::name('name')); Config::set('url_html_suffix', 'shtml'); @@ -103,7 +108,6 @@ class urlTest extends \PHPUnit_Framework_TestCase Config::set('url_domain_deploy', false); Config::set('url_common_param', false); Url::root('/index.php'); - Route::rules([]); Route::get('blog/:id', 'index/blog/read'); Config::set('url_html_suffix', 'shtml'); $this->assertEquals('/index.php/blog/10/name/thinkphp.shtml', Url::build('index/blog/read?id=10&name=thinkphp'));