一、獲取ThinkPHP
獲取ThinkPHP的方式很多,官方網(wǎng)站是最好的下載和文檔獲取來源。建議使用composer或者git安裝:
- topthink/thinkphp是3.2版本。
- topthink/think是最新thinkphp5。
- topthink/framework是核心框架,一般不選擇。
官網(wǎng)下載版本提供了完整版和核心版兩個版本,核心版本只保留了核心類庫和必須的文件,去掉了所有的擴(kuò)展類庫和驅(qū)動,支持標(biāo)準(zhǔn)模式和SAE模式,一般下載完整版進(jìn)行開發(fā)。
二、環(huán)境要求
框架本身沒有什么特別模塊要求,具體的應(yīng)用系統(tǒng)運行環(huán)境要求視開發(fā)所涉及的模塊。ThinkPHP底層運行的內(nèi)存消耗極低,而本身的文件大小也是輕量級的,因此不會出現(xiàn)空間和內(nèi)存占用的瓶頸。
PHP5.4以上版本(注意:PHP5.3dev版本和PHP6均不支持)
topthink/think依賴于php相應(yīng)版本和topthink/framework組件。
支持Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase、Mongo以及PDO等多種數(shù)據(jù)庫和連接
三、目錄結(jié)構(gòu)
下載ThinkPHP框架后,解壓縮到web目錄下面,可以看到初始的目錄結(jié)構(gòu)如下:
ThinkPHP5.0.9目錄結(jié)構(gòu)
一級目錄有六個,分別是應(yīng)用目錄,拓展類庫目錄,web開放目錄,運行時目錄,框架系統(tǒng)目錄,第三方類庫。
一級目錄中有一些文件,分別是協(xié)議,readme,composer配置和鎖文件,think命令行工具,自動生成定義文件build.php。
README.md文件僅用于說明,實際部署的時候可以刪除。
上面的目錄結(jié)構(gòu)和名稱是可以改變的,這取決于你的入口文件和配置參數(shù)。
ThinPHP默認(rèn)路由訪問順序是/模塊/控制器/控制器方法
四、入口文件
ThinkPHP采用單一入口模式進(jìn)行項目部署和訪問,無論完成什么功能,一個應(yīng)用都有一個統(tǒng)一(但不一定是唯一)的入口。應(yīng)該說,所有應(yīng)用都是從入口文件開始的,并且不同應(yīng)用的入口文件是類似的。
入口文件定義
-
入口文件主要完成:
定義框架路徑、項目路徑(可選)
定義調(diào)試模式和應(yīng)用模式(可選)
定義系統(tǒng)相關(guān)常量(可選)
載入框架入口文件(必須)
默認(rèn)情況下,TP5版本的框架已經(jīng)自帶了一個應(yīng)用入口文件(以及默認(rèn)的目錄結(jié)構(gòu)),內(nèi)容如下:
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
- 注意:3.2版本開始無需定義APP_NAME常量
如果你改變了項目目錄(例如把Application更改為Apps),只需要在入口文件更改APP_PATH常量定義即可:
define('APP_PATH','./Apps/');
require './ThinkPHP/ThinkPHP.php';
- 注意:APP_PATH的定義支持相對路徑和絕對路徑,但必須以“/”結(jié)束
五、開發(fā)規(guī)范
使用ThinkPHP開發(fā)的過程中應(yīng)該盡量遵循下列命名規(guī)范:
類文件都是以.class.php為后綴(這里是指的ThinkPHP內(nèi)部使用的類庫文件,不代表外部加載的類庫文件),使用駝峰法命名,并且首字母大寫,例如 DbMysql.class.php;
類的命名空間地址和所在的路徑地址一致,例如 Home\Controller\UserController類所在的路徑應(yīng)該是 Application/Home/Controller/UserController.class.php;
確保文件的命名和調(diào)用大小寫一致,是由于在類Unix系統(tǒng)上面,對大小寫是敏感的(而ThinkPHP在調(diào)試模式下面,即使在Windows平臺也會嚴(yán)格檢查大小寫);
類名和文件名一致(包括上面說的大小寫一致),例如 UserController類的文件命名是UserController.class.php, InfoModel類的文件名是InfoModel.class.php, 并且不同的類庫的類命名有一定的規(guī)范;
函數(shù)、配置文件等其他類庫文件之外的一般是以.php為后綴(第三方引入的不做要求);
函數(shù)的命名使用小寫字母和下劃線的方式,例如 get_client_ip;
方法的命名使用駝峰法,并且首字母小寫或者使用下劃線“_”,例如 getUserName,_parseType,通常下劃線開頭的方法屬于私有方法;
屬性的命名使用駝峰法,并且首字母小寫或者使用下劃線“_”,例如 tableName、_instance,通常下劃線開頭的屬性屬于私有屬性;
以雙下劃線“__”打頭的函數(shù)或方法作為魔法方法,例如 __call 和 __autoload;
常量以大寫字母和下劃線命名,例如 HAS_ONE和 MANY_TO_MANY;
配置參數(shù)以大寫字母和下劃線命名,例如HTML_CACHE_ON;
語言變量以大寫字母和下劃線命名,例如MY_LANG,以下劃線打頭的語言變量通常用于系統(tǒng)語言變量,例如 CLASS_NOT_EXIST;
對變量的命名沒有強(qiáng)制的規(guī)范,可以根據(jù)團(tuán)隊規(guī)范來進(jìn)行;
ThinkPHP的模板文件默認(rèn)是以.html 為后綴(可以通過配置修改);
數(shù)據(jù)表和字段采用小寫加下劃線方式命名,并注意字段名不要以下劃線開頭,例如 think_user 表和 user_name字段是正確寫法,類似 _username 這樣的數(shù)據(jù)表字段可能會被過濾。
特例:在ThinkPHP里面,有一個函數(shù)命名的特例,就是單字母大寫函數(shù),這類函數(shù)通常是某些操作的快捷定義,或者有特殊的作用。例如:A、D、S、L 方法等等,他們有著特殊的含義,后面會有所了解。
由于ThinkPHP默認(rèn)全部使用UTF-8編碼,所以請確保你的程序文件采用UTF-8編碼格式保存,并且去掉BOM信息頭(去掉BOM頭信息有很多方式,不同的編輯器都有設(shè)置方法,也可以用工具進(jìn)行統(tǒng)一檢測和處理),否則可能導(dǎo)致很多意想不到的問題。
開發(fā)建議-
在使用ThinkPHP進(jìn)行開發(fā)的過程中,我們給出如下建議,會讓你的開發(fā)變得更輕松:
遵循框架的命名規(guī)范和目錄規(guī)范;
開發(fā)過程中盡量開啟調(diào)試模式;
多看看日志文件,查找隱患問題;
養(yǎng)成使用I函數(shù)獲取輸入變量的好習(xí)慣;
環(huán)境改變后首先要清空Runtime目錄;
