下面由thinkphp框架教程欄目給大家介紹如何快速使用ThinkPHP框架快速搭建網(wǎng)站(分享),希望對(duì)需要的朋友有所幫助!
使用ThinkPHP框架快速搭建網(wǎng)站
實(shí)驗(yàn)環(huán)境:
- 1. WAMP(集成的那種,最Easy的幾乎不需要配置)
- 2. ZendStudio7.2(中文網(wǎng)址http://www.zendstudio.net/,里面提供下載,在線注冊(cè)機(jī)以及使用教程)
- 3. ThinkPHP框架+百度UEditor編輯器插件
- 4. Win7-64bit操作系統(tǒng)
- 5. 瀏覽器(火狐,IE,Chrome),外加火狐FireBug插件用于調(diào)試以及偷樣式
第一步:找網(wǎng)頁(yè)模板(不會(huì)美工,PS,見(jiàn)諒。。)
前端頁(yè)面我找的是一個(gè)大學(xué)的實(shí)驗(yàn)室,這里就不貼了,很普通的那種。后臺(tái)直接下載的模板,感覺(jué)蠻漂亮的,運(yùn)行后如下圖:
第二步:初識(shí)百度UEditor插件
由于我要做的是實(shí)驗(yàn)室的網(wǎng)站。實(shí)驗(yàn)室網(wǎng)站主要內(nèi)容在如下幾個(gè)方面:
- 介紹實(shí)驗(yàn)室的成員
- 實(shí)驗(yàn)室的項(xiàng)目,成果等
- 實(shí)驗(yàn)室的新聞以及學(xué)術(shù)交流信息
可見(jiàn),信息主要偏重于后臺(tái)的新聞,文章信息的發(fā)布,而前臺(tái)幾乎不存在編輯。所以重點(diǎn)要在后臺(tái)實(shí)現(xiàn)一個(gè)方便的文章發(fā)布體系。
我選用了百度出品的UEditor所見(jiàn)即所得編輯器。主要是JS實(shí)現(xiàn)的,整合到后臺(tái)后如下所示,功能真的很多哇:
關(guān)于UEditor的如何整合到網(wǎng)站中,請(qǐng)參考UEditor的官網(wǎng),里面有詳細(xì)教程。
第三步:初識(shí)ThinkPHP框架
下面開(kāi)始介紹ThinkPHP框架,首先為了加強(qiáng)感性認(rèn)識(shí),先看一看ThinkPHP工程的目錄結(jié)構(gòu):
文件夾:
- admin是后臺(tái)工程文件夾
- home是前臺(tái)工程
- public里面用于存放CSS文件,JS文件以及網(wǎng)頁(yè)里面的圖片
- ThinkPHP框架
- ueditor是百度編輯器
下面三個(gè)PHP文件:
- admin.php是后臺(tái)工程的入口文件,
- index.php是前臺(tái)工程的入口文件。
- config.inc.php,由于這個(gè)小項(xiàng)目的幾乎所有數(shù)據(jù)都放在數(shù)據(jù)庫(kù)里,而前后臺(tái)都要連接數(shù)據(jù)庫(kù),所以所有的數(shù)據(jù)庫(kù)配置代碼放在了它里面。
由于我這里面實(shí)際是兩個(gè)工程(home和admin),只要理解其中一個(gè)即可,故下面只介紹后臺(tái),即admin部分。
接著往下看,看一下admin.php文件,這是需要了解的第一個(gè)文件,即后臺(tái)的入口文件。
幾個(gè)宏定義分別指明了:
- 1. ThinkPHP框架的路徑
- 2. 后臺(tái)應(yīng)用程序目錄
- 3. 后臺(tái)應(yīng)用程序名稱(chēng)
- 4. 開(kāi)啟調(diào)試模式
- 5. 包含ThinkPHP框架下的ThinkPHP.php文件(重要!)
下面新建一個(gè)小工程來(lái)演示一下開(kāi)發(fā)過(guò)程:
比如整個(gè)工程的大目錄是xxx,然后把ThinkPHP框架拷貝進(jìn)來(lái),并添加admin.php文件(如上圖中的代碼)
此時(shí)在瀏覽器里面輸入:http://localhost/xxx/admin.php會(huì)自動(dòng)生成admin目錄,如下圖
打開(kāi)admin目錄,內(nèi)容如下:
其中主要關(guān)注四個(gè)文件夾:
1. Conf 存放工程配置文件(比如定義一些常量什么的)
2. Lib (最重要!存放MVC模式中的模型類(lèi)和控制器類(lèi))
3. Tpl(存放模板文件,按道理前面我們下載的模板應(yīng)該放在這里)
4. Runtime(存放運(yùn)行時(shí)文件,比如緩存啊,數(shù)據(jù)庫(kù)表緩存什么的)
最后貼出瀏覽器上的運(yùn)行結(jié)果。。對(duì)不起貼的有點(diǎn)晚。
第四步:初識(shí)MVC模式
到這里,不得不提一下在ThinkPHP中的MVC的概念。MVC很有名,叫做模型-視圖-控制器模式。
在ThinkPHP里面:
模型(Model)可以認(rèn)為就是一張數(shù)據(jù)庫(kù)表。那我做的工程來(lái)說(shuō):
對(duì)于一篇文章(新聞),它的屬性包括ID號(hào),標(biāo)題,作者,創(chuàng)建時(shí)間,最后修改時(shí)間以及文章內(nèi)容。這就是一篇文章的模型。然后就按照這個(gè)思路建立對(duì)應(yīng)的數(shù)據(jù)庫(kù)表:
視圖(View)可以認(rèn)為就是用戶看到的東西,即模板,或者說(shuō)皮膚。
比如前面貼出的后臺(tái)模板,那個(gè)在ThinkPHP概念中就是視圖。
控制器(Action)可以認(rèn)為是視圖與模型之前的橋梁。因?yàn)榫W(wǎng)站上顯示的內(nèi)容基本全部來(lái)自眾多模型們(數(shù)據(jù)庫(kù)表們),而控制器負(fù)責(zé)的就是決定在哪些情況下顯示哪些模型里面的哪些數(shù)據(jù)。還是拿我的例子說(shuō),我后臺(tái)工程的首頁(yè)對(duì)應(yīng)的控制器是Index控制器。(Index控制器為所有工程的默認(rèn)控制器)。但是你想,一個(gè)網(wǎng)站的首頁(yè)一般是有很多按鈕啊,超鏈接啊什么的,可以跳到其他地方去的東西。貼張圖:
這是我的后臺(tái)首頁(yè)。可以看到左邊有導(dǎo)航欄,右下邊列出了數(shù)據(jù)庫(kù)當(dāng)前的文章信息,可以看到一共有三篇文章。比如我現(xiàn)在可能想做:
1. 把文章”1111測(cè)試文章發(fā)布系統(tǒng)”刪除
2. 把文章”詹姆斯高捧第3座MVP獎(jiǎng)杯”改成”詹姆斯高捧第4座MVP獎(jiǎng)杯”
3. 新添加一篇?jiǎng)e的文章
這就對(duì)應(yīng)了Index控制器的不同功能了,也就是Index控制器類(lèi)IndexAction的不同方法(比如取名edit()方法,delete()方法,add()方法)。當(dāng)然之所以會(huì)看到頁(yè)面顯示,是因?yàn)槟J(rèn)情況下執(zhí)行Index控制器的Index()方法,在該方法中調(diào)用display()方法顯示模板(視圖)。不信可以看默認(rèn)的文件,里面的Index控制器的Index方法實(shí)現(xiàn)的就是HelloThinkPHP的歡迎頁(yè)面。
比如:
IndexAction目錄為:
/xxx/admin/Lib/Action/IndexAction.class.php
內(nèi)容為:
可以看到,默認(rèn)情況下在index方法中調(diào)用了$this->display()
(注意看IndexAction 繼承Action類(lèi),display方法是Action類(lèi)的方法);
調(diào)用display()方法后,ThinkPHP會(huì)在對(duì)應(yīng)工程的Tpl文件夾下的Index文件下下找index.html文件。其中前一個(gè)Index文件夾對(duì)應(yīng)的是Index控制器,index.html對(duì)應(yīng)的是index()方法。
所以,一個(gè)控制器類(lèi)對(duì)應(yīng)一個(gè)模板文件夾。具體對(duì)應(yīng)多少個(gè)模板跟控制器類(lèi)有多少個(gè)方法以及有多少個(gè)方法需要display有關(guān)。
故,此時(shí)對(duì)應(yīng)的模板文件路徑為:
/xxx/admin/Tpl/Index/index.html
細(xì)心的朋友可能要問(wèn)了,你這里只說(shuō)了視圖(模板)和控制器啊,模型呢?你是怎么知道數(shù)據(jù)庫(kù)里的那三篇文章的信息的呢?其實(shí)不然,我在index方法里面還做了一些事情,下圖是精簡(jiǎn)版index方法:
可以看到,第一步,我就實(shí)例化了一個(gè)模型。模型名字是Article,前面說(shuō)到模型就是數(shù)據(jù)庫(kù)表,此時(shí)查看一下有哪些數(shù)據(jù)庫(kù)表:
第一個(gè)表名字是think_article,可以看到還差一個(gè)前綴think_,其實(shí)這個(gè)是在配置文件中指定的,還記得前文所述的config.inc.php嗎? 其配置代碼如下所示:
<?php return array( 'DB_TYPE' =>'mysql', 'DB_HOST' =>'localhost', 'DB_NAME' =>數(shù)據(jù)庫(kù)名字, 'DB_USER' =>用戶名, 'DB_PWD' =>密碼, 'DB_PORT' =>'3306', 'DB_PREFIX' =>'think_', ); ?>
第二條語(yǔ)句就是查詢數(shù)據(jù)庫(kù)。ThinkPHP提供了很多種查詢數(shù)據(jù)庫(kù)的方法,我使用的是連貫操作法。
執(zhí)行完第二條語(yǔ)句后$new_list變量就存儲(chǔ)了所有文章的信息,那么怎么把它顯示到界面上去呢?
看第三句話,它把該變量分配給了一個(gè)叫做’new_list’的變量 (好像同名了哇。。不過(guò)沒(méi)關(guān)系,關(guān)鍵是assign方法),然后我們?cè)谀0逦募锩孢M(jìn)行替換就OK啦。默認(rèn)情況下,在HTML里面寫(xiě) {$new_list}就OK啦。當(dāng)然,這里面的new_list是一個(gè)復(fù)合的變量,不是單純的數(shù)字或者字符串。。不過(guò)ThinkPHP提供了很多循環(huán)的方法給我們使用,很是方便。
源碼下載
最后給出示例工程xxx的源碼。有需要的朋友可以下載,可以很快的了解ThinkPHP的大概原理。
源碼功能:
- 1.后臺(tái)管理員登陸
- 2.添加文章,編輯文章,刪除文章
- 3.前臺(tái)顯示文章
使用方法:
- 1.解壓到網(wǎng)站根目錄下,默認(rèn)是www文件夾下的xxx文件夾:
- 2.在MySQL中新建一個(gè)數(shù)據(jù)庫(kù),比如rubydb,整理成utf8-genaral-ci
- 3.導(dǎo)入數(shù)據(jù)庫(kù)表文件夾下的兩個(gè)數(shù)據(jù)庫(kù)表 think_article 和think_user,導(dǎo)入后入下圖:
- 4.配置Config.inc.php文件
[php] view plain copy
- <span style="font-size:16px;"><?php
- return array(
- 'DB_TYPE' => 'mysql',
- 'DB_HOST' => 'localhost',
- 'DB_NAME' => '自己建一個(gè)數(shù)據(jù)庫(kù)',//需要新建一個(gè)數(shù)據(jù)庫(kù)!名字叫
- 'DB_USER' => '你的數(shù)據(jù)庫(kù)用戶名', //數(shù)據(jù)庫(kù)用戶名
- 'DB_PWD' => '你的數(shù)據(jù)庫(kù)密碼',//數(shù)據(jù)庫(kù)登錄密碼
- 'DB_PORT' => '3306',
- 'DB_PREFIX' <span style="white-space:pre"> </span>=> 'think_',//數(shù)據(jù)庫(kù)表名前綴
- );
- ?></span>
可見(jiàn),上面的DB_NAME,DB_USER,DB_PWD需要修改
分別是
'DB_NAME'=>'rubydb' , 'DB_USER' =>'你的mysql登錄賬號(hào)' , 'DB_PWD' =>'你的mysql登錄密碼'
- 5.運(yùn)行 http://localhost/xxx/admin.php,彈出后臺(tái)登錄頁(yè)面:
輸入數(shù)據(jù)庫(kù)think_user里面的用戶信息: ruby97,密碼ruby97 ,再輸入驗(yàn)證碼即可登錄。