# 控制器 控制器路由是用来访问网站控制器方法使用的,我们来看下面的代码: [TOC] ## 配置 ####命名空间 路由加载控制器时使用 app.php配置文件中的 path配置项做为控制器类的起始命名空间。 比如我们使用 app\home\Entry 类,我们定义的路由如下: ``` Route::get('show','app\admin\controller\Entry@show'); ``` 系统使用 app\home\Entry 控制器类。 #### 默认方法 当所有路由都没有匹配成功时,可以使用 config/http.php 配置文件中,default_controller与default_action 定义的配置项执行默认控制器方法。 ## 基本使用 ``` Route::get('foo', 'app\admin\controller\index@add'); ``` 当我们访问foo时调用 Home模块Index控制器的add方法 ## 参数传递 控制器接收路由参数时变量名要与路由定义的参数名一致,顺序不需要和路由参数顺序一致,更多的路由参数学习请参数 [路由参数](http://www.kancloud.cn/houdunwang/hdphp3/215178) 课程章节中的讲解。 #### 路由定义 执行Entry控制器中的show方法 ``` Route::get('show/{id}_{cid}.html', 'home\entry@show') ``` #### 控制器定义 ``` namespace app\home\controller; class Entry{ public function show($id,$cid){ echo "访问是 $id,$cid"; } } ``` ## 隐式控制器 HDPHP 让你能轻易地定义单一路由来处理控制器中的每一项行为。首先用 Route::controller 方法定义一个路由: ``` Route::controller('user', "app\admin\controller\Entry") ``` Controller 方法接受两个参数。第一个参数是控制器欲处理的 URI,第二个是控制器的类名称。接着只要在你的控制器中加入方法,并在名称前加上它们所对应的 HTTP 请求。 ``` namespace app\home\controller; class Entry{ public function getIndex(){ echo 'index'; } public function getAdd(){ echo 'add'; } public function postEdit(){ echo 'edit'; } public function putUpdate(){ echo 'update'; } public function deleteRemove(){ echo 'delete'; } } ``` 如果发送以下请求,将会执行 getAdd 方法 ``` http://hdphp2.hd/user/add ```