通過之前的學習我們知道了index.php是一個入口文件,如果沒有這個入口文件的話,我們需要自己創建!
【視圖模板文件創建】
視圖模板文件存放發位置在:
里面沒有模板文件
如果我們想要訪問Login控制器中的Login方法,首先我們要創建一個Login控制器對應的模板文件夾,該文件夾就對應着Login控制器:
然后在Login文件夾下再創建一個login.html的模板文件來對應Login控制器下的Login方法:
在login.html里面寫入要顯示的代碼:
然后再次請求:
【url地址大小寫設置】
默認是不敏感的:
在config.php里邊對url大小寫敏感進行設置
【空操作和空控制器處理】
空操作:沒有指定的操作方法
空控制器:沒有指定控制器
http://網址/index.php/Home/User/login
http://網址/index.php/Home/User/hello 空操作
http://網址/index.php/Home/beijing/login 空控制器
空操作:
一般網站處於安全考慮不給用戶提示任何錯誤信息,空控制器:(為了防止對我們的網站進行攻擊,看不出用什么做的網站)
“空操作”本質意思:一個對象(控制器)調用本身不存在的方法(空操作就是訪問了原來的控制器里沒有的操作)
在OOP里邊,對象調用本身不存在方法,處於用戶體驗比較好的角度考慮,我們可以在類里邊制作一個魔術方法:function __call();
在tp里面控制器的父類:
父類中有個方法:__call()
所以空操作有兩種解決方案:
① 在對應的控制器里邊制作一個方法,名稱為”_empty”,這個控制器的空操作都會自動執行該方法。(推薦使用)
② 給空操作的名稱制作一個同名的模板出來,系統會自動調用
空控制器:(等於訪問了一個沒有的類)
空控制器:在實例化控制器對象的時候,沒有找到指定的類
什么時候實例化控制器對象:ThinkPHP/Library/Think/App.class.php
熟記文件:
index.php 入口文件
ThinkPHP/ThinkPHP.php 框架核心文件
ThinkPHP/Library/Think/Think.class.php 框架核心文件
ThinkPHP/Library/Think/App.class.php 框架應用文件
在App.class.php內部包括控制器對象創建,以及對象調用指定的方法呈現內容:
A()方法是個快捷的方法 用來造對象的
空控制器處理方案:可以再制作一個控制器,名稱EmptyController.class.php
在該控制器內部其實只需要制作一個_empty()方法即可。
這樣再次請求:
【項目分組】
系統有前台用戶操作界面
系統還有后台供公司內部人員使用維護平台、Home文件夾代表前台應用、admin代表后台應用
兩者在使用的過程中就是對“控制器”、“視圖模板”、“model模型”的操作
為了系統開發方便,及代碼部署更加合理,我們的控制器、view視圖等前后台文件不要混在起,要在物理結構上給分開
http://網址/index.php/Home/控制器/操作方法 訪問Home控制器及制定操作
http://網址/index.php/Admin/控制器/操作方法 訪問Admin分組的控制器和操作方法
》Home文件夾代表前台應用
》空操作實際上就是訪問了原來的控制器里沒有的操作,去操作調用的話,會自動調用這個方法 __call() 這個方法在父類里可以找到
》//空方法
舉例:
public function _empty()
{
echo "滾犢子,別亂訪問";
}
》訪問空控制器,相當於訪問一個沒有的類
》thinkPHP/Librarary/Think/App.class.php ->App.class.php 框架應用文件,在這個文件里,它會自動的把控制器的對象創建出來,創建的時候調用了一個A方法,這個是tp模板提供的一個快捷方法,用來快速造對象。A('類名')
》創建控制器實例的時候,如果發現沒有這個類,會自動判斷是否定義了empty控制器
》對空控制器的處理方法:做一個EmptyController.class.php控制器里寫_empty()空方法
》項目分組 根據模塊來分,前台后台的模塊同屬一個項目文件夾內,但是互不影響
》》輸出的文字如果有亂碼,可以在代碼中加上:header("Content-Type:text/html; charset=utf-8");
訪問空方法解決辦法->在控制器里面創建 _empty 方法
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
public function _empty()
{
echo"網址輸入錯誤"; //空方法的處理辦法
}
}
訪問控控制器解決方法->創建一個名為EmptyController.class.php的控制器文件,在該控制器下創建一個 _empty 方法
<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
public function _empty()
{
echo"網頁不存在,請檢查網址是否正確"; //空方法的處理辦法
}
}
跨控制器調用方法
1, 加載類的方法 $class=new class; $class->function;
2, A方法 $class=A("控制器"); $class->function;
3, R方法 R("控制器/方法");
跨模塊調用方法
1, A方法 $class=A("模塊/控制器"); $class->function;
2, R方法 R("模塊/控制器/方法");
命名空間相關知識點
1.系統目錄下根命名空間是ThinkPHP\Library下面的文件夾名稱命名的
2.模塊的根命名空間是以模塊名命名的
在定義命名空間的時候需要從根寫起例如:Home\Controller 例如:Think\Model
如果要使用某個類文件,引入該類命名空間的時候,使用use關鍵字,后面寫該類的命名空間 后面加上 "\文件名"
如果不想引入命名空間:在造類的對象的時候可以使用\(初始命名空間)來找到對應的類
例如:new \Think\Page(30);