## 控制器 我们找到`index`模块的`Index`控制器(文件位于`application/index/controller/Index.php` 注意大小写),我们把`Index`控制器类的`index`方法修改为`Hello,World!`。 ~~~ <?php namespace app\index\controller; class Index { public function index() { return 'Hello,World!'; } } ~~~ >[success]### 提示: > * * * * * > 根据类的命名空间可以快速定位文件位置,在`ThinkPHP5.0`的规范里面,命名空间其实对应了文件的所在目录,`app`命名空间通常代表了文件的起始目录为`application`,而`think`命名空间则代表了文件的起始目录为`thinkphp/library/think`,后面的命名空间则表示从起始目录开始的子目录。 我们访问URL地址 ~~~ http://tp5.com ~~~ 就会看到`Hello,World!`的输出结果。 如果要访问一个驼峰命名的控制器,例如我们把上面的例子改成一个`HelloWorld`控制器。 ~~~ <?php namespace app\index\controller; class HelloWorld { public function index($name = 'World') { return 'Hello,' . $name . '!'; } } ~~~ 默认情况下正确的方法是使用下面的URL进行访问 ~~~ http://tp5.com/index.php/index/hello_world ~~~ 下面的访问地址是错误的 ~~~ http://tp5.com/index.php/index/HelloWorld ~~~ ![](https://box.kancloud.cn/53358a74210f3ad08afcc0c7d53b03d8_766x485.png) 因为默认的URL访问是不区分大小写的,全部都会转换为小写的控制器名,除非你在应用配置文件中,设置了关闭url自动转换如下: ~~~ 'url_convert' => false, ~~~ 那么就可以正常访问 ~~~ http://tp5.com/index.php/index/HelloWorld ~~~ 如果要继承一个公共的控制器类,可以使用: ~~~ <?php namespace app\index\controller; use app\index\controller\Base; class Index extends Base { public function index() { return 'Hello,World!'; } } ~~~ 可以为操作方法定义参数,例如: ~~~ <?php namespace app\index\controller; class Index { public function index($name = 'World') { return 'Hello,' . $name . '!'; } } ~~~ 当我们带`name`参数访问入口文件地址(例如 `http://tp5.com?name=ThinkPHP`)的时候,在浏览器中可以看到如下输出: `Hello,ThinkPHP!` 控制器类可以包括多个操作方法,但如果你的操作方法是`protected`或者`private`类型的话,是无法直接通过URL访问到该操作的,也就是说只有`public`类型的操作方法才是可以通过URL访问的。 我们来验证下,把`Index`控制器类的方法修改为: ~~~ <?php namespace app\index\controller; class Index { public function hello() { return 'hello,thinkphp!'; } public function test() { return '这是一个测试方法!'; } protected function hello2() { return '只是protected方法!'; } private function hello3() { return '这是private方法!'; } } ~~~ 当我们访问如下URL地址的时候,前面两个是正常访问,后面两个则会显示异常。 ~~~ http://tp5.com/index.php/index/index/hello http://tp5.com/index.php/index/index/test http://tp5.com/index.php/index/index/hello2 http://tp5.com/index.php/index/index/hello3 ~~~ 当我们访问`hello2`和`hello3`操作方法后的结果都会显示类似的异常信息: ![](https://box.kancloud.cn/bbb4dd03b8b6a95ddd4129cd56db00ca_1162x716.png) 异常页面包含了详细的错误信息,是因为开启了调试模式,如果关闭调试模式的话,看到的默认信息如下: ![](https://box.kancloud.cn/ceb999e12c1f654c259699b02f3649b0_852x175.png)