ThinkPHP基礎知識

一、獲取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目錄;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內容

  • 一、獲取ThinkPHP 獲取ThinkPHP的方式很多,官方網站是最好的下載和文檔獲取來源。建議使用compos...
    小小奶狗閱讀 1,454評論 0 2
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,806評論 18 139
  • 這里記錄的是本人學習的thinkPHP筆記官方開發手冊http://document.thinkphp.cn/ma...
    遠方的楓葉閱讀 1,443評論 0 15
  • 叁 幸福,是在尋找的過程中一點一點積累的小心情。如同每天的晚安一樣,自然而不做作。你在深夜里同我訴說情傷,因為我們...
    京起一灘鷗露閱讀 193評論 0 0
  • 該用怎樣的辭藻來贊美這個繁花似錦的季節,又該用何種言語描繪這個生機盎然的時節 三月的春天,春意驅走了連綿數日以來長...
    Yusiuil閱讀 233評論 0 1