一個(gè)典型的URL訪問規(guī)則是(我們以默認(rèn)的PATHINFO模式為例說明,當(dāng)然也可以支持普通的URL模式):
http://serverName/index.php(或者其他應(yīng)用入口文件)/模塊/控制器/操作/[參數(shù)名/參數(shù)值...]
ThinkPHP3.2的應(yīng)用可以支持切換到命令行訪問,如果切換到命令行模式下面的訪問規(guī)則是:
>php.exe index.php(或其它應(yīng)用入口文件) 模塊/控制器/操作/[參數(shù)名/參數(shù)值...]
解釋下其中的幾個(gè)概念:
名稱 | 描述 |
---|---|
應(yīng)用 | 基于同一個(gè)入口文件訪問的項(xiàng)目我們稱之為一個(gè)應(yīng)用。 |
模塊 | 一個(gè)應(yīng)用下面可以包含多個(gè)模塊,每個(gè)模塊在應(yīng)用目錄下面都是一個(gè)獨(dú)立的子目錄。 |
控制器 | 每個(gè)模塊可以包含多個(gè)控制器,一個(gè)控制器通常體現(xiàn)為一個(gè)控制器類。 |
操作 | 每個(gè)控制器類可以包含多個(gè)操作方法,也可能是綁定的某個(gè)操作類,每個(gè)操作是URL訪問的最小單元。 |
模塊化設(shè)計(jì)的思想下面模塊是最重要的部分,模塊其實(shí)是一個(gè)包含配置文件、函數(shù)文件和MVC文件(目錄)的集合。
Common模塊是一個(gè)特殊的模塊,是應(yīng)用的公共模塊,訪問所有的模塊之前都會(huì)首先加載公共模塊下面的配置文件(Conf/config.php
)和公共函數(shù)文件(Common/function.php
)。但Common模塊本身不能通過URL直接訪問,公共模塊的其他文件則可以被其他模塊繼承或者調(diào)用。
公共模塊的位置可以通過COMMON_PATH常量改變,我們可以在入口文件中重新定義COMMON_PATH如下:
define('COMMON_PATH','./Common/');define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
3.2對模塊的訪問是自動(dòng)判斷的,所以通常情況下無需配置模塊列表即可訪問,但可以配置禁止訪問的模塊列表(用于被其他模塊調(diào)用或者不開放訪問),默認(rèn)配置中是禁止訪問Common
模塊和Runtime
模塊(Runtime目錄是默認(rèn)的運(yùn)行時(shí)目錄),我們可以增加其他的禁止訪問模塊列表:
// 設(shè)置禁止訪問的模塊列表'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
設(shè)置后,Api模塊不能通過URL直接訪問,事實(shí)上,可能我們只是在該模塊下面放置一些公共的接口文件,因此都是內(nèi)部調(diào)用即可。
如果你的應(yīng)用下面模塊比較少,還可以設(shè)置允許訪問列表和默認(rèn)模塊,這樣可以簡化默認(rèn)模塊的URL訪問。
'MODULE_ALLOW_LIST' => array('Home','Admin','User'),'DEFAULT_MODULE' => 'Home',
設(shè)置之后,除了Home、Admin和User模塊之外的模塊都不能被直接訪問,并且Home模塊是默認(rèn)訪問模塊(可以不出現(xiàn)在URL地址)。
如果你的應(yīng)用夠簡單,那么也許僅僅用一個(gè)模塊就可以完成,那么可以直接設(shè)置:
// 關(guān)閉多模塊訪問'MULTI_MODULE' => false,'DEFAULT_MODULE' => 'Home',
一旦關(guān)閉多模塊訪問后,就只能訪問默認(rèn)模塊(這里設(shè)置的是Home)。
單模塊設(shè)計(jì)后公共模塊依然有效
可以給相同的應(yīng)用及模塊設(shè)置多個(gè)入口,不同的入口文件可以設(shè)置不同的應(yīng)用模式或者綁定模塊。
例如,我們在index.php
文件的同級(jí)目錄新增一個(gè)home.php
入口文件,并綁定Home模塊:
3.2.0版本寫法:
$_GET['m'] = 'Home'; // 綁定Home模塊到當(dāng)前入口文件$_GET['c'] = 'Index'; // 綁定Index控制器到當(dāng)前入口文件define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
3.2.1以上版本寫法:
define('BIND_MODULE', 'Home'); // 綁定Home模塊到當(dāng)前入口文件define('BIND_CONTROLLER','Index'); // 綁定Index控制器到當(dāng)前入口文件define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
綁定模塊和控制器后,原來的訪問地址:
http://serverName/index.php/Home/Index/index
就變成:
http://serverName/home.php/index
===========================================
聯(lián)系客服