ThinkPHP的URL結構對初學者來說是一個很難理解的問題,比如同樣的一個頁面:
http://localhsot/index.php
我也可以使用 http://localhost/index.php/Index/index顯示出來。
從這里來看能夠很好的拆解URL地址的含義對學號ThinkPHP尤為重要。下面看一下實例:
我建立的ThinkPHP實例,在根目錄下創建項目home,並使用了Home和Admin模塊分組,實現了模塊的分組操作。
基本的ThinkPHP URL訪問是這樣的:
http://域名/項目名/分組名/模塊名/操作名/其他參數
比如我的域名就是 localhost;項目名沒有;分組名就是Home 或者Admin;模塊名就是Index;操作名就是IndexAction.class.php控制器中的某個函數。
這里必須知道控制器、操作名、項目分組等含義。個人理解入口文件是每個頁面都需要的index.php;項目名就是這個入口文件建立的項目的名字;控制器就是項目文件夾中lib\action\文件夾中的類似IndexAction.class.php的類文件;操作名也是方法,就是控制器中的function方法名。
寫控制器時需要注意控制器的命名規則:
1、控制的文件名命名: IndexAction.class.php 首字母大寫,加上 .class;
2、類的定義: class IndexAction extends Action 類名和文件名師對應的(注意大寫),還需要繼承Action類
3、控制器可以使用Private方式定義function,但是只能在該控制器中使用。
空操作方法的定義:
空操作方法的性質有點類似於GET或者POST提交輸出的方式,通過瀏覽器輸入的網址中的操作名來進行相應的操作(如果存在相應的操作即進行相關操作,如果不存在則進行空操作)
public function _empty($name) {
$this->city($name);
}
protected function city($name) {
echo $name;
}
知道了空操作,空模型就不用再多說什么也就很容易理解了。當用戶在地址欄輸入的地址中的控制器不存在時,就只直接導入到空模型中。
<?PHP
class EmptyAction extends Action {
public function index(){
$cityname = MODULE_NAME;
$this->city($cityname);
}
private function city($cityname) {
echo $cityname;
}
}
?>