关于U方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于U方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3500字,纯文字阅读大概需要6分钟。
内容图文
先说说提这个问题的由头:看到别人在thinkphp中用U方法时,这样用 U('verify')其中参数verify是自定义的一个控制器里的方法
那么问题来了这种形式的调用为啥能有效呢,下面是U方法的写法,从中没有看出哪里可以这样使用呢?
function U($url,$vars='',$suffix=true,$redirect=false,$domain=false) { // 解析URL $info = parse_url($url); $url = !empty($info['path'])?$info['path']:ACTION_NAME; // 解析子域名 if($domain===true){ $domain = $_SERVER['HTTP_HOST']; if(C('APP_SUB_DOMAIN_DEPLOY') ) { // 开启子域名部署 $domain = $domain=='localhost'?'localhost':'www'.strstr($_SERVER['HTTP_HOST'],'.'); // '子域名'=>array('项目[/分组]'); foreach (C('APP_SUB_DOMAIN_RULES') as $key => $rule) { if(false === strpos($key,'*') && 0=== strpos($url,$rule[0])) { $domain = $key.strstr($domain,'.'); // 生成对应子域名 $url = substr_replace($url,'',0,strlen($rule[0])); break; } } } } // 解析参数 if(is_string($vars)) { // aaa=1&bbb=2 转换成数组 parse_str($vars,$vars); }elseif(!is_array($vars)){ $vars = array(); } if(isset($info['query'])) { // 解析地址里面参数 合并到vars parse_str($info['query'],$params); $vars = array_merge($params,$vars); } // URL组装 $depr = C('URL_PATHINFO_DEPR'); if($url) { if(0=== strpos($url,'/')) {// 定义路由 $route = true; $url = substr($url,1); if('/' != $depr) { $url = str_replace('/',$depr,$url); } }else{ if('/' != $depr) { // 安全替换 $url = str_replace('/',$depr,$url); } // 解析分组、模块和操作 $url = trim($url,$depr); $path = explode($depr,$url); $var = array(); $var[C('VAR_ACTION')] = !empty($path)?array_pop($path):ACTION_NAME; $var[C('VAR_MODULE')] = !empty($path)?array_pop($path):MODULE_NAME; if(C('URL_CASE_INSENSITIVE')) { $var[C('VAR_MODULE')] = parse_name($var[C('VAR_MODULE')]); } if(C('APP_GROUP_LIST')) { if(!empty($path)) { $group = array_pop($path); $var[C('VAR_GROUP')] = $group; }else{ if(GROUP_NAME != C('DEFAULT_GROUP')) { $var[C('VAR_GROUP')] = GROUP_NAME; } } } } } if(C('URL_MODEL') == 0) { // 普通模式URL转换 $url = __APP__.'?'.http_build_query($var); if(!empty($vars)) { $vars = http_build_query($vars); $url .= '&'.$vars; } }else{ // PATHINFO模式或者兼容URL模式 if(isset($route)) { $url = __APP__.'/'.$url; }else{ $url = __APP__.'/'.implode($depr,array_reverse($var)); } if(!empty($vars)) { // 添加参数 $vars = http_build_query($vars); $url .= $depr.str_replace(array('=','&'),$depr,$vars); } if($suffix) { $suffix = $suffix===true?C('URL_HTML_SUFFIX'):$suffix; if($suffix) { $url .= '.'.ltrim($suffix,'.'); } } } if($domain) { $url = 'http://'.$domain.$url; } if($redirect) // 直接跳转URL redirect($url); else return $url;}// URL重定向
回复讨论(解决方案)
$url = 'verify';$info = parse_url($url);Array
(
[path] => verify
)
你跟踪一下就知道了
内容总结
以上是互联网集市为您收集整理的关于U方法全部内容,希望文章能够帮你解决关于U方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。