TP框架 ---空控制器和空操作


通過之前的學習我們知道了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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM