栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > thinkphp

闭包支持_帮助文档_Thinkphp手册用法

thinkphp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

闭包支持_帮助文档_Thinkphp手册用法

闭包定义

我们可以使用闭包的方式定义一些特殊需求的路由,而不需要执行控制器的操作方法了,例如:

'URL_ROUTE_RULES'=>array(
    'test'        => 
        function(){ 
            echo 'just test';
        },
    'hello/:name' => 
        function($name){ 
            echo 'Hello,'.$name;
        }
)
参数传递

闭包定义的参数传递在规则路由和正则路由的两种情况下有所区别。

规则路由

规则路由的参数传递比较简单:

'hello/:name' =>     function($name){         echo 'Hello,'.$name;    }

规则路由中定义的动态变量的名称 就是闭包函数中的参数名称,不分次序。 因此,如果我们访问的URL地址是: http://serverName/Home/hello/thinkphp

则浏览器输出的结果是: Hello,thinkphp

如果多个参数可以使用:

'hello/:name' => 
    function($name){ 
        echo 'Hello,'.$name;
    }
正则路由

如果是正则路由的话,闭包函数中的参数就以正则中出现的参数次序来传递,例如:

'blog/:year/:month' => 
    function($year,$month){ 
        echo 'year='.$year.'&month='.$month;
    }

如果我们访问: http://serverName/Home/new/2013/03 浏览器输出结果是: year=2013&month=03

继续执行

默认的情况下,使用闭包定义路由的话,一旦匹配到路由规则,执行完闭包方法之后,就会中止后续执行。如果希望闭包函数执行后,后续的程序继续执行,可以在闭包函数中使用布尔类型的返回值,例如:

'hello/:name' => 
    function($name){ 
        echo 'Hello,'.$name.'
';         $_SERVER['PATH_INFO'] = 'blog/read/name/'.$name;         return false;     }

该路由定义中的闭包函数首先执行了一段输出代码,然后重新设置了$_SERVER['PATH_INFO']变量,交给后续的程序继续执行,因为返回值是false,所以会继续执行控制器和操作的检测,从而会执行Blog控制器的read操作方法。

假设blog控制器中的read操作方法代码如下:

public function read($name){
    echo 'read,'.$name.'!
'; }

如果我们访问的URL地址是: http://serverName/Home/hello/thinkphp

则浏览器输出的结果是:

Hello,thinkphp
read,thinkphp!


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号