基礎(chǔ)
文件目錄
www WEB部署目錄(或者子目錄)
├─index.php 入口文件,保留在www目錄
├─README.md README文件,可刪除
├─Application 應(yīng)用目錄,為了安全,可放置www之外
├─Public 資源文件目錄,保留在www目錄
└─ThinkPHP 框架目錄,為了安全,可放置www之外
入口文件
作用:
定義框架路徑、項(xiàng)目路徑(可選)
定義調(diào)試模式和應(yīng)用模式(可選)
定義系統(tǒng)相關(guān)常量(可選)
載入框架入口文件(必須)
控制器
控制器類的命名方式是:控制器名(駝峰法,首字母大寫)+Controller
控制器文件的命名方式是:類名+class.php(類文件后綴)
配置文件
配置文件格式
ThinkPHP框架中默認(rèn)所有配置文件的定義格式均采用返回PHP數(shù)組的方式,格式為:
//項(xiàng)目配置文件
return array(
'DEFAULT_MODULE' => 'Index', //默認(rèn)模塊
'URL_MODEL' => '2', //URL模式
'SESSION_AUTO_START' => true, //是否開啟session
'USER_CONFIG' => array(
'USER_AUTH' => true,
'USER_TYPE' => 2,
),
//更多配置參數(shù)
);
配置加載
配置加載順序,右邊最大
慣例配置->應(yīng)用配置->模式配置->調(diào)試配置->狀態(tài)配置->模塊配置->擴(kuò)展配置->動態(tài)配置
模式配置(可選)
如果使用了普通應(yīng)用模式之外的應(yīng)用模式的話,還可以為應(yīng)用模式(后面會有描述)單獨(dú)定義配置文件,文件命名規(guī)范是: Application/Common/Conf/config_應(yīng)用模式名稱.php(僅在運(yùn)行該模式下面才會加載)。
模式配置文件是可選的
調(diào)試配置(可選)
如果開啟調(diào)試模式的話,則會自動加載框架的調(diào)試配置文件(位于ThinkPHP/Conf/debug.php)和應(yīng)用調(diào)試配置文件(位于Application/Common/Conf/debug.php)
狀態(tài)配置(可選)
每個(gè)應(yīng)用都可以在不同的情況下設(shè)置自己的狀態(tài)(或者稱之為應(yīng)用場景),并且加載不同的配置文件。
舉個(gè)例子,你需要在公司和家里分別設(shè)置不同的數(shù)據(jù)庫測試環(huán)境。那么可以這樣處理,在公司環(huán)境中,我們在入口文件中定義:
define('APP_STATUS','office');
那么就會自動加載該狀態(tài)對應(yīng)的配置文件(位于Application/Common/Conf/office.php)。
讀取配置
C方法的使用
$get = C('配置屬性名');
// 如果my_config尚未設(shè)置的話,則返回default_config字符串
C('my_config',null,'default_config');
//獲取用戶配置中的用戶類型設(shè)置
C('USER_CONFIG.USER_TYPE');
動態(tài)配置
就是給配置參數(shù)賦予一個(gè)新的值
C('參數(shù)名稱','新的參數(shù)值')
擴(kuò)展配置
'LOAD_EXT_CONFIG' => 'user,db',
如果在模塊(假設(shè)是Home模塊)的配置文件中配置的話,則會自動加載模塊目錄下面的配置文件 Application/Home/Conf/user.php和Application/Home/Conf/db.php.
如果配置文件改成:
//加載擴(kuò)展配置文件'LOAD_EXT_CONFIG' =>array('USER'=>'user','DB'=>'db'),
則最終獲取用戶參數(shù)的方式改成:
C('USER.USER_AUTH_ID');
批量配置
$config=array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'開源PHP框架');
C($config);```
---
#架構(gòu)
**URL訪問規(guī)則**
http://serverName/index.php(或者其他應(yīng)用入口文件)/模塊/控制器/操作/[參數(shù)名/參數(shù)值...]
**自動生成模塊目錄、控制器、模型**
// 綁定Admin模塊到當(dāng)前入口文件
define('BIND_MODULE','Admin');
// 綁定Index控制器到當(dāng)前入口文件
define('BIND_CONTROLLER','Index');
//第一種,生成更多控制器類的方法
define('BUILD_CONTROLLER_LIST','Index,User,Menu');
//第二種,生成更多控制器類的方法, 如果已經(jīng)存在則不會重新生成。
\Think\Build::buildController('Admin','Role');
//第一種,生成模型類的方法
define('BUILD_MODEL_LIST','User,Menu');
//第二種,生成模型類的方法
\Think\Build::buildModel('Admin','Role');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
**禁止訪問模塊**
// 設(shè)置禁止訪問的模塊列表
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
**設(shè)置訪問列表**
'MODULE_ALLOW_LIST' => array('Home','Admin','User'),
'DEFAULT_MODULE' => 'Home',
**單模塊設(shè)計(jì)**
如果你的應(yīng)用夠簡單,那么也許僅僅用一個(gè)模塊就可以完成,那么可以直接設(shè)置:
// 關(guān)閉多模塊訪問
'MULTI_MODULE' => false,
'DEFAULT_MODULE' => 'Home',
一旦關(guān)閉多模塊訪問后,就只能訪問默認(rèn)模塊(這里設(shè)置的是Home)。
##多層MVC