ThinkPHP
采用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口文件,系統會從URL
參數中解析當前請求的模塊、控制器和操作,下面是一個標准的URL
訪問格式:
localhost/index.php/模塊/控制器/操作
而且訪問時不需要區分大小寫,無論URL是否開啟大小寫轉換,模塊名都會強制小寫。
1.應用的index
模塊的Index
控制器定義如下:
<?php namespace app\index\controller; //命名空間 class Index{ //控制器名稱 public function index(){ //方法名稱 return 'index'; //用return輸出而不要用echo } public function hello($name = 'World'){ //方法里可以放變量 return 'Hello,' . $name . '!'; //這里引用了$name變量,中間拼接用"." } }
現在訪問的路徑為
localhost/index/index/hello
訪問URL地址后頁面輸出結果為:
Hello,World!
如果要訪問控制器的hello方法,則需要使用完整的URL地址
localhost/index/index/hello/name/tp5
訪問URL地址后頁面輸出結果為:
Hello,tp5!
現在給hello方法增加第二個參數:
public function hello($name = 'World', $city = ''){ return 'Hello,' . $name . '! You come from ' . $city . '.'; }
訪問地址為
localhost/index.php/index/index/hello/name/thinkphp/city/shanghai
頁面輸出結果為:
Hello,thinkphp! You come from shanghai.
可以看到,hello
方法會自動獲取URL地址中的同名參數值作為方法的參數值,而且這個參數的傳入順序不受URL參數順序的影響,例如下面的URL地址輸出的結果和上面是一樣的:
localhost/index.php/index/index/hello/city/shanghai/name/thinkphp
或者使用
localhost/index.php/index/index/hello?city=shanghai&name=thinkphp
2.如果你的控制器是駝峰的,例如定義一個HelloWorld控制器(application/index/controller/HelloWorld.php
):
<?php namespace app\index\controller; class HelloWorld{ public function index($name = 'World'){ return 'Hello,' . $name . '!'; } }
正確的URL訪問地址(該地址可以使用url方法生成)應該是:
localhost/index.php/index/hello_world/index
系統會自動定位到HelloWorld
控制器類去操作。