一、獲取ThinkPHP
獲取ThinkPHP的方式很多,官方網站(http://thinkphp.cn)是最好的下載和文檔獲取來源。
官網提供了穩定版本的下載:http://thinkphp.cn/down/framework.html
官網下載版本提供了完整版和核心版兩個版本,核心版本只保留了核心類庫和必須的文件,去掉了所有的擴展類庫和驅動,支持標準模式和SAE模式。
二、環境要求
框架本身沒有什么特別模塊要求,具體的應用系統運行環境要求視開發所涉及的模塊。ThinkPHP底層運行的內存消耗極低,而本身的文件大小也是輕量級的,因此不會出現空間和內存占用的瓶頸。
PHP版本要求
PHP5.3以上版本(注意:PHP5.3dev版本和PHP6均不支持)
支持的服務器和數據庫環境
支持Windows/Unix服務器環境
可運行于包括Apache、IIS和nginx在內的多種WEB服務器和模式
支持Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase、Mongo以及PDO等多種數據庫和連接
三、目錄結構
下載3.2框架后,解壓縮到web目錄下面,可以看到初始的目錄結構如下:
www WEB部署目錄(或者子目錄)
├─index.php 入口文件
├─README.md README文件
├─Application 應用目錄
├─Public 資源文件目錄
└─ThinkPHP 框架目錄
3.2版本相比之前的版本自帶了一個完整的應用目錄結構和默認的應用入口文件,開發人員可以在這個基礎之上靈活調整。其中,Application和Public目錄下面都是空的。
README.md文件僅用于說明,實際部署的時候可以刪除。
上面的目錄結構和名稱是可以改變的,這取決于你的入口文件和配置參數。
Application目錄默認是空的,但是第一次訪問入口文件會自動生成,參考后面的入口文件部分。
四、入口文件
ThinkPHP采用單一入口模式進行項目部署和訪問,無論完成什么功能,一個應用都有一個統一(但不一定是唯一)的入口。應該說,所有應用都是從入口文件開始的,并且不同應用的入口文件是類似的。
入口文件定義
入口文件主要完成:
定義框架路徑、項目路徑(可選)
定義調試模式和應用模式(可選)
定義系統相關常量(可選)
載入框架入口文件(必須)
默認情況下,3.2版本的框架已經自帶了一個應用入口文件(以及默認的目錄結構),內容如下:
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的定義支持相對路徑和絕對路徑,但必須以“/”結束
【這里的Apps是應用目錄,如果想自動生成新的功能模塊,比如Admin作為后臺,可以在入口文件修改為Admin然后訪問到程序根目錄,就會生成新的文件夾】
五、開發規范
使用ThinkPHP開發的過程中應該盡量遵循下列命名規范:
類文件都是以.class.php為后綴(這里是指的ThinkPHP內部使用的類庫文件,不代表外部加載的類庫文件),使用駝峰法命名,并且首字母大寫,例如 DbMysql.class.php;
類的命名空間地址和所在的路徑地址一致,例如 Home\Controller\UserController類所在的路徑應該是 Application/Home/Controller/UserController.class.php;
確保文件的命名和調用大小寫一致,是由于在類Unix系統上面,對大小寫是敏感的(而ThinkPHP在調試模式下面,即使在Windows平臺也會嚴格檢查大小寫);
類名和文件名一致(包括上面說的大小寫一致),例如 UserController類的文件命名是UserController.class.php, InfoModel類的文件名是InfoModel.class.php, 并且不同的類庫的類命名有一定的規范;
函數、配置文件等其他類庫文件之外的一般是以.php為后綴(第三方引入的不做要求);
函數的命名使用小寫字母和下劃線的方式,例如 get_client_ip;
方法的命名使用駝峰法,并且首字母小寫或者使用下劃線“_”,例如 getUserName,_parseType,通常下劃線開頭的方法屬于私有方法;
屬性的命名使用駝峰法,并且首字母小寫或者使用下劃線“_”,例如 tableName、_instance,通常下劃線開頭的屬性屬于私有屬性;
以雙下劃線“__”打頭的函數或方法作為魔法方法,例如 __call 和 __autoload;
常量以大寫字母和下劃線命名,例如 HAS_ONE和 MANY_TO_MANY;
配置參數以大寫字母和下劃線命名,例如HTML_CACHE_ON;
語言變量以大寫字母和下劃線命名,例如MY_LANG,以下劃線打頭的語言變量通常用于系統語言變量,例如 _CLASS_NOT_EXIST_;
對變量的命名沒有強制的規范,可以根據團隊規范來進行;
ThinkPHP的模板文件默認是以.html 為后綴(可以通過配置修改);
數據表和字段采用小寫加下劃線方式命名,并注意字段名不要以下劃線開頭,例如 think_user 表和 user_name字段是正確寫法,類似 _username 這樣的數據表字段可能會被過濾。
特例:在ThinkPHP里面,有一個函數命名的特例,就是單字母大寫函數,這類函數通常是某些操作的快捷定義,或者有特殊的作用。例如:A、D、S、L 方法等等,他們有著特殊的含義,后面會有所了解。
由于ThinkPHP默認全部使用UTF-8編碼,所以請確保你的程序文件采用UTF-8編碼格式保存,并且去掉BOM信息頭(去掉BOM頭信息有很多方式,不同的編輯器都有設置方法,也可以用工具進行統一檢測和處理),否則可能導致很多意想不到的問題。
開發建議
在使用ThinkPHP進行開發的過程中,我們給出如下建議,會讓你的開發變得更輕松:
遵循框架的命名規范和目錄規范;
開發過程中盡量開啟調試模式,及早發現問題;
多看看日志文件,查找隱患問題;
養成使用I函數獲取輸入變量的好習慣;
更新或者環境改變后遇到問題首要問題是清空Runtime目錄;