為了幫老師用ThinkSNS二次開發一個微博系統,專門花了幾天學習ThinkPHP框架,現在將一些ThinkPHP入門知識作以記錄。
首先聲明:
本文不是完全教程,只是將開發中碰到的問題作以總結,如果需要學習ThinkPHP框架,請參考官網文檔:
ThinkPHP3.1快速入門教程(更新中)
目錄結構
目錄/文件 | 說明 |
---|---|
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