1.URL訪問
ThinkPHP采用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口文件,系統會從URL參數中解析當前請求的模塊、控制器和操作,下面是一個標准的URL訪問格式:
第一種訪問方式
http://localhost:/thinkphp/index.php/Home/Index/index 入口文件/模塊/控制器/操作
第二種訪問方式(傳參數)
http://localhost:/thinkphp/index.php?m=Home&c=Index&a=index 傳三個參數
而且訪問時不需要區分大小寫,無論URL是否開啟大小寫轉換,模塊名都會強制小寫。
2.命名空間
相當於一個虛擬的路徑
自動加載類
初始命名空間:thinkPHP/Library 虛擬的
根命名空間:由兩部分組成:
1.Library下面的所有文件夾都是根命名空間
2.程序目錄下模塊文件夾
使用某一個類:
use 該類的根命名空間/.../類名
use Think\Controller;

定義命名空間:
namespace 該類的根命名空間/.../它所在的文件夾為止
namespace Home\Controller;
3.空操作和和空控制器處理
空操作:就沒有指定的操作方法
“空操作”本質意思:一個對象(控制器)調用本身不存在的方法
空操作有兩種解決方案:
① 在對應的控制器里邊制作一個方法,名稱為”_empty”,這個控制器的空操作都會自動執行該方法。(推薦使用)
//訪問方法不存在時調用
public function _empty(){
echo "空操作";
}
② 給空操作的名稱制作一個同名的模板出來,系統會自動調用
空控制器:沒有指定控制器
空控制器:在實例化控制器對象的時候,沒有找到指定的類
空控制器處理方案:可以再制作一個控制器,名稱EmptyController.class.php
在該控制器內部其實只需要制作一個_empty()方法即可。

<?php
namespace Home\Controller;
use think\Controller;
class EmptyController extends Controller{
public function _empty(){
echo "控制器不存在";
}
}
4.系統常量信息
//獲取系統常量信息方法
public function test(){ var_dump(get_defined_constants(true)); }
如果加參數true,會分組顯示,如下圖:

//常用的常量信息(獲取不同路徑)
__ROOT__ 獲取TP的根路徑(/thinkphp) __SELF__ 當前瀏覽器地址欄中的地址(/thinkphp/index.php/Home/Index/test) __APP__ 入口文件的路徑(/thinkphp/index.php) __MODULE__ 當前程序模塊的路徑(/thinkphp/index.php/Home) __CONTROLLER__ 當前控制器的路徑(/thinkphp/index.php/Home/Index) __ACTION__ 當前操作方法的路徑(/thinkphp/index.php/Home/Index/test)
5.跨控制器調用
一個控制器在執行的時候,可以實例化另外一個控制,並通過對象訪問其指定方法。
跨控制器調用可以節省我們代碼的工作量
<?php
namespace Home\Controller;
//繼承父類
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo "Hello!";
}
public function test(){
//控制器間的調用
$this->index();
//調用標記
$this->mark("hello world");
}
//加標記
public function mark($s){
return "<mark>{$s}</mark>";
}
}
還可以另外創建一個操作類進行跨控制器調用

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
public function diaoyong(){
//跨控制器調用 造對象
//$index = new \Home\Controller\IndexController();
//造控制器對象(TP中自帶的快捷函數)
//$index = A("index");
//調用方法
//$index->mark("你好");
//造完對象后直接調用(TP中自帶的快捷函數)
//R("index/biaoji");
}
}
6.參數傳值
public function test(){
//第一中GET傳值
//echo $_GET["code"];
//echo $_GET["name"];
//echo $_GET["abc"];
}
//瀏覽器地址欄
http://localhost:/thinkphp/index.php/Home/index/test/code/123/name/李四/abc/MVC
//第二種接收形參傳值
public function test($code,$name){
echo $code;
echo $name;
}
//瀏覽器地址欄
http://localhost:/thinkphp/index.php/Home/index/test/code/123/name/李四

