Thinkphp 空操作、空控制器、命名空間(詳解)
1、空操作
空操作是指系統(tǒng)在找不到請(qǐng)求的操作方法的時(shí)候,會(huì)定位到空操作(_empty)方法來(lái)執(zhí)行,利用這個(gè)機(jī)制,我們可以實(shí)現(xiàn)錯(cuò)誤頁(yè)面和一些URL的優(yōu)化。
http://網(wǎng)址/index.php/Home/Main/login
http://網(wǎng)址/index.php/Home/Main/hello 空操作
出現(xiàn)頁(yè)面:

顯示的錯(cuò)誤信息過(guò)于詳細(xì),為安全以及優(yōu)化頁(yè)面起見(jiàn),實(shí)行空操作
1、做一個(gè)_empty()方法。要在子類(lèi)里面寫(xiě),不要再父類(lèi)里(推薦使用)
function _empty()
{
echo "網(wǎng)頁(yè)不存在,請(qǐng)檢查瀏覽器地址信息!";
}

2.造一個(gè)該方法對(duì)應(yīng)的模版
在view/main下面新建一個(gè)text.html文件
<body> <h1>別亂訪問(wèn)</h1> </body> </html>

注意:空操作方法僅在你的控制器類(lèi)繼承系統(tǒng)的Think\Controller類(lèi)才有效,否則需要自己定義 __call 來(lái)實(shí)現(xiàn)。
2、空控制器
空控制器的概念是指當(dāng)系統(tǒng)找不到請(qǐng)求的控制器名稱(chēng)的時(shí)候,系統(tǒng)會(huì)嘗試定位空控制器(EmptyController),利用這個(gè)機(jī)制我們可以用來(lái)定制錯(cuò)誤頁(yè)面和進(jìn)行URL的優(yōu)化。
Home/Controller/EmptyController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
public function _empty()
{
echo "訪問(wèn)的頁(yè)面不存在!";
}
}

3、跨控制器調(diào)用
一個(gè)控制器在執(zhí)行的時(shí)候,可以實(shí)例化另外一個(gè)控制,并通過(guò)對(duì)象訪問(wèn)其指定方法。
跨控制器調(diào)用可以節(jié)省我們代碼的工作量
3.1 同一模塊下:
例如:在Home/Controller中有兩個(gè)控制器:IndexController.class.php和MainController.class.php

在IndexController.class.php有一個(gè)方法:
public function ShuChu()
{
return "教務(wù)管理系統(tǒng)!";
}
現(xiàn)在想要在 MainController.class.php中也調(diào)用ShuChu()方法
function DiaoYong()
{
//方法一:造對(duì)象
//$index=new IndexController();
//echo $index->ShuChu();
//造對(duì)象有快捷函數(shù)供我們使用:
//A(“[模塊/]控制器標(biāo)志”) 實(shí)例化控制器對(duì)象
//方法二:使用A()方法
//$index=A("Index");
//echo $index->ShuChu();
//R([模塊/]控制器標(biāo)志/操作方法) 實(shí)例化對(duì)象同時(shí)調(diào)用指定方法
//方法三:使用R()方法,造對(duì)象并且調(diào)用某個(gè)特定的方法
echo R("Index/ShuChu");
}
運(yùn)行結(jié)果:

3.2 不同模塊下:
新添加一個(gè)模塊Admin

TextController.class.php:
<?php
namespace Admin\Controller;
use Think\Controller;
class TextController extends Controller
{
public function Text()
{
echo "HHHHH";
}
}
現(xiàn)在想要在Home/Controller/ MainController.class.php中也調(diào)用Text()方法
function Text()
{
//跨模塊調(diào)用
//方法一:使用A()方法
//$tt=A("Admin/Text");
//echo $tt->Text();
//方法二:使用R()方法,造對(duì)象并且調(diào)用某個(gè)特定的方法
echo R("Admin/Text/Text");
}
運(yùn)行結(jié)果:

4.命名空間namespace
相當(dāng)于一個(gè)虛擬的目錄
正常管理文件使用文件夾--物理區(qū)分
TP框架的初始命名空間是:ThinkPHP\Library
在TP框架下命名空間里面使用\代表的是初始命名空間(ThinkPHP\Library)
1.系統(tǒng)目錄下根命名空間是ThinkPHP\Library下面的文件夾名稱(chēng)命名的
2.模塊的根命名空間是以模塊名命名的
在定義命名空間的時(shí)候需要從根寫(xiě)起例如:Home\Controller 例如:Think\Model
如果要使用某個(gè)類(lèi)文件,引入該類(lèi)命名空間的時(shí)候:
使用use關(guān)鍵字,后面寫(xiě)該類(lèi)的命名空間 后面加上 "\文件名"
如果不想引入命名空間:在造類(lèi)的對(duì)象的時(shí)候可以使用\(初始命名空間)來(lái)找到對(duì)應(yīng)的類(lèi)
例如:new \Think\Page(30);
以上這篇Thinkphp 空操作、空控制器、命名空間(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- ThinkPHP控制器間實(shí)現(xiàn)相互調(diào)用的方法
- ThinkPHP中URL路徑訪問(wèn)與模塊控制器之間的關(guān)系
- thinkphp3.2實(shí)現(xiàn)跨控制器調(diào)用其他模塊的方法
- thinkphp3.2實(shí)現(xiàn)上傳圖片的控制器方法
- thinkphp控制器調(diào)度使用示例
- ThinkPHP3.2.2的插件控制器功能
- thinkPHP通用控制器實(shí)現(xiàn)方法示例
- thinkPHP控制器變量在模板中的顯示方法示例
- ThinkPHP5.0框架控制器繼承基類(lèi)和自定義類(lèi)示例
- TP(thinkPHP)框架多層控制器和多級(jí)控制器的使用示例
相關(guān)文章
php實(shí)現(xiàn)微信小程序訂閱消息推送(access_token獲取緩存刷新)
這篇文章主要為大家介紹了php實(shí)現(xiàn)微信小程序訂閱消息推送包含access_token獲取緩存刷新示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
phpStudy2018安裝教程及本地服務(wù)器的配置方法
phpStudy 2018是一款非常強(qiáng)大的php環(huán)境調(diào)試工具,一次性安裝,無(wú)須配置即可使用,是非常方便、好用的PHP調(diào)試環(huán)境。這篇文章主要介紹了phpStudy2018安裝教程及本地服務(wù)器的配置方法,需要的朋友可以參考下2018-03-03
護(hù)衛(wèi)神php套件 php版本升級(jí)方法(php5.5.24)
這篇文章主要介紹了護(hù)衛(wèi)神php套件 php版本升級(jí)方法(php5.5.24),需要的朋友可以參考下2015-05-05

