標籤:名稱 成員 thinksns 項目配置 class 開頭 api php檔案 檔案結構
為了幫老師用ThinkSNS二次開發一個微博系統,專門花了幾天學習ThinkPHP架構,現在將一些ThinkPHP入門知識作以記錄。
首先聲明:
本文不是完全教程,只是將開發中碰到的問題作以總結,如果需要學習ThinkPHP架構,請參考官網文檔:
官網首頁
ThinkPHP3.1快速入門教程(更新中)
ThinkPHP完全開發手冊
ThinkPHP3.1 API手冊
附:開源微博系統ThinkSNS
目錄結構
| 目錄/檔案 |
說明 |
| ThinkPHP.php |
架構入口檔案 |
| Common |
架構公用檔案目錄 |
| Conf |
架構設定檔目錄 |
| Lang |
架構系統語言目錄 |
| Lib |
系統核心基底類別庫目錄 |
| Tpl |
系統模板目錄 |
| Extend |
架構擴充目錄(關於擴充目錄的詳細資料請參考後面的擴充章節) |
我的檔案結構
入口(ThinkPHP.php)
1、先在Web根目錄(我用的phpstudy,是www檔案夾)下面建立一個app項目(這個app就是我們的項目名)。
2、將下載的ThinkPHP解壓(我是解壓到app下,名為ThinkPHP)。
3、在app目錄下面建立一個index.php檔案,添加兩行簡單的代碼:
<?php
define("APP_DEBUG", TRUE); //開啟偵錯模式,方便調試 require ‘/ThinkPHP架構所在目錄/ThinkPHP.php‘; //我的為/ThinkPHP/ThinkPHP.php
這行代碼的作用就是載入ThinkPHP架構的入口檔案ThinkPHP.php,這是所有基於ThinkPHP開發應用的第一步。
然後,在瀏覽器中訪問這個入口檔案。
http://localhost/app/index.php
因為index.php為預設首頁,所以亦可省略。
模板(Tpl)
Tpl檔案夾下為模版頁面,可放置html、php等頁面。
同時支援多模組,即可在Tpl下建立多個檔案夾,每個檔案夾對應一個模組,同時一個模組和一個控制器對應(需要名字相同)
我的:
兩個模組Form、Index
Tpl下對應有兩個檔案夾Form、Index
則對應的控制器也是兩個FormController.class.php、IndexController.class.php
控制器(Controller)
命名:模組名+Controller
PATHINFO模式:是系統的預設URL模式,提供了最好的SEO支援,系統內部已經做了環境的相容處理,所以能夠支援大多數的主機環境。
對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:
http://localhost/app/index.php/module/action/var/value/
//module為模組名稱(控制器名稱)、不帶Controller //action為操作名稱(控制器中的方法名稱)、不帶Model //var為參數名 //value為參數值
//var與value成對出現
我的:
http://localhost/app/index.php/Index/index
調用IndexController下的index()方法
如果該方法不存在,將直接調用Tpl/Index/index.html頁面
模型(Model)
1、命名:模組名字+Model
在ThinkPHP的模型裡面,有幾個關於資料表名稱的屬性定義,在對應的Model中聲明為屬性欄位(或者叫成員變數):
| 屬性 |
說明 |
| tableName |
不包含表首碼的資料表名稱,一般情況下預設和模型名稱相同,只有當你的表名和當前的模型類的名稱不同的時候才需要定義。 |
| trueTableName |
包含首碼的資料表名稱,也就是資料庫中的實際表名,該名稱無需設定,只有當上面的規則都不適用的情況或者特殊情況下才需要設定。 |
| dbName |
定義模型當前對應的資料庫名稱,只有當你當前的模型類對應的資料庫名稱和設定檔不同的時候才需要定義。 |
只要命名規範,ThinkPHP會根據Model名字找到你要調用的資料庫表,當然,前提你得建立。
規則:
1)表名為tp_categories(tp_為表首碼,在設定檔中配置)
protected $tableName = ‘categories‘;
2)表名為top_depts,top_不是系統配置的表首碼,需要使用表的全名
protected $trueTableName = ‘top_depts‘;
3)可設定資料庫
protected $dbName = ‘top‘;
調用:
可調用本模組Model,也可跨項目或模組調用。
本模組:
D("UserModel")
跨項目:
D("UserModel", "app") //D(Model名稱,項目名稱)
M方法與D方法類似,不過,我只用了D方法
函數庫
可通過load(@.hello),hello為函數庫檔案名稱
也可通過在項目設定檔中定義LOAD_EXT_FILE參數,例如:
"LOAD_EXT_FILE"=>"user,db"
類庫
通過import可引入使用的類包,可跨項目或模組
import("App.Model.UserModel");
App為應用程式名稱Model表明是模型UserModel為模型名稱
資料庫
這塊東西太多,使用也最頻繁,因此,官方文檔介紹的很詳細,請大家點擊文章開頭的連結查看
寫了好久,希望對大家有點用處。
原文連結:http://www.cnblogs.com/FlyFive/archive/2013/01/06/2848246.html
ThinkPHP架構初步掌握