簡介
ThinkPHP是一個快速、簡單的基於MVC和物件導向的輕量級PHP開發框架,遵循Apache2開源協議發布,從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡的程式碼的同時,尤其註重開發體驗和易用性,並且擁有眾多的原創功能和特性,為WEB應用開發提供了強有力的支援。
目錄結構
ThinkPHP最新版本可以在官方網站(http://thinkphp.cn/down/framework.html)或Github(https://github.com/liu21st/thinkphp/downloads)下載。
把下載後的壓縮檔案解壓縮到你的WEB目錄(或任何目錄都可以),框架的目錄結構為:
├─ThinkPHP.php 框架入口檔案
├-Common 框架入口檔案
├框架─ Conf 框架設定檔
├─Extend 框架擴充目錄
├─Lang 核心語言套件目錄
├─Lib 核心類別庫目錄
│ ├─Driver 內建驅動程式│ │ ├─Cache 內建快取驅動程式│ │ 內建標籤驅動│ │ └─Template 內建範本引擎驅動程式│ └─Template 內建模板引擎└─Tpl 系統範本目錄注意,框架的公共入口檔案ThinkPHP.php是不能直接執行的,該檔案只能在專案入口檔案中調用說到),這是很多新手很容易犯的錯誤。 入口文件在開始之前,你需要一個Web伺服器和PHP運行環境,如果你暫時還沒有,我們推薦使用集成開發環境WAMPServer(是一個集成了Apache、PHP和My支援多個PHP版本、MySQL版本和Apache版本的切換)來使用ThinkPHP進行本機開發和測試。
接下來我們先在WEB根目錄下面建立一個app子目錄(這個app是我們的專案名稱),然後在目錄下方建立一個index.php文件,加入一行簡單的程式碼:
require '/ThinkPHP框架所在目錄/ThinkPHP.php';
然後,在瀏覽器中存取這個入口檔案。
http://localhost/app/
一般Web伺服器的預設檔案是index.php,所以我們可以不需要在URL位址中加上index.php。運作後我們會看到歡迎頁面,
自動產生了專案目錄,目錄結構如下:
├─index.php 專案入口檔案專案
├專案─Common 專案入口檔案專案
├專案。目錄├─Lang 專案語言目錄├─Lib 專案類別庫目錄│ ├─Action Action類別庫目錄庫目錄
│ └─Widget Widget類別庫目錄
├─Runtime 專案執行時目錄
│ ├─Cache 模板快取
│ └─Temp臨時快取目錄
└─Tpl 專案範本目錄
如果你希望專案的入口檔案移動到app目錄的外面,那麼只需要修改入口檔案index.php的內容為:
define(' APP_NAME','app');
define('APP_PATH','./app/');
require '/ThinkPHP框架所在目錄/ThinkPHP.php';
APP_NAMEAPP_PATHPATH部分。名和項目目錄,項目名通常是指項目的目錄名稱。
移動並修改完專案的入口檔案後,我們就可以透過http://localhost/存取app專案了。當然你也可以在Web根目錄下面建立多個子目錄來部署多個專案。 配置每個專案都有獨立的設定檔(位於專案目錄的Conf/config.php),設定檔的定義格式皆採用PHP傳回陣列的方式,例如:
// 專案設定檔
return array(
'設定參數' => '設定值',
// 較設定參數
。通常我們提到的新增設定項目,就是指在項目設定檔中加入:
'設定參數' => '設定值',
設定值可以支援包括字串、數字、布林值和陣列在內的數據,通常我們建議配置參數均使用大寫定義。如果有需要,我們也可以為專案定義其他的設定檔。
控制器
需要為每個模組定義一個控制器類,控制器類別的命名規範是:模組名稱+Action.class.php (模組名稱採用駝峰法並且首字母大寫)
系統的預設模組是Index,對應的控制器就是專案目錄下面的Lib/Action/IndexAction.class.php,類別名稱和檔案名稱一致。預設操作是index,也就是控制器的一個public方法。初次產生專案目錄結構的時候,系統已經預設產生了一個預設控制器(就是之前看到的歡迎頁面),我們把index方法改成下面的程式碼:class IndexAction extends Action {
public function ){
echo 'hello,world!';
}
}
控制器必須繼承多個操作方法。如果你的操作方法是protected或private類型的話,是無法直接透過URL存取到該操作的。
URL請求
入口文件是項目的單一入口,對項目的所有請求都定向到項目的入口文件,系統會從URL參數中解析當前請求的模組和操作,我們之前訪問的URL地址中沒有任何參數,因此系統會存取預設模組(Index)的預設操作(index),因此下面的存取和之前是等效的:
http://localhost/app/index.php/Index/index
這種URL模式就是系統預設的PATHINFO模式,不同的URL模式取得模組和操作的方法不同,ThinkPHP支援的URL模式有四種:普通模式、PATHINFO、REWRITE和相容模式。普通模式:也就是傳統的GET傳參方式來指定目前存取的模組和操作,例如:
http://localhost/app/?m=module&a=action&var=value
m參數表示模組,a操作表示操作(模組和操作的URL參數名稱是可以設定的),後面的表示其他GET參數。 PATHINFO模式:是系統的預設URL模式,提供了最好的SEO支持,系統內部已經做了環境的兼容處理,所以能夠支援大多數的主機環境。對應上面的URL模式,PATHINFO模式下面的URL存取位址是:
http://localhost/app/index.php/module/action/var/value/
PATHINFO位址的第一個參數表示模組,第二個參數表示操作。
PATHINFO模式下面,URL是可自訂的,例如,透過下面的配置:'URL_PATHINFO_DEPR'=>'-', // 更改PATHINFO參數分隔符號
我們還可以支援下面的URL存取:http
如果是Apache則需要在入口文件的同級添加.htaccess文件,內容如下:
RewriteEngine on
例如:
要輸出視圖,必須在控制器方法中進行模板渲染輸出操作,例如:
class IndexAction extends Action {
// 進行模板變數賦值
$this->display();
}
}
display方法中我們沒有指定任何模板,所以按照系統預設的定義了模板,所以按照系統預設值/html/html。
接下來,我們在瀏覽器中輸入http://localhost/app/瀏覽器中會輸出hello,thinkphp!
中建立一個think_data資料表(以mysql資料庫為例):
>
'DB_USER ' => 'root', // 使用者名稱'DB_PWD' => '', // 密碼'DB_PORT' => 33306,0/// // 資料庫表前綴或採用以下設定'DB_DSN' => 'mysql://root@localhost:3306/thinkphp'使用DB_DSN方式定義可以簡化設定參數,DSN參數格式為:資料庫類型://使用者名:密碼@資料庫位址:資料庫連接埠/資料庫名稱如果兩種設定參數同時存在的話,DB_DSN設定參數優先。 接下來,我們修改下控制器方法,新增讀取資料的程式碼:class IndexAction extends Action { public function Data資料模型 $this->data = $Data->select(); $ inkPHP內建的實例化模型的方法,而且用M方法實例化模型不需要創建對應的模型類,你可以理解為M方法是直接在操作底層的Model類,而Model類具備基本的CURD操作方法。M('Data') 實例化後,就可以對think_data資料表(think_ 是我們在專案設定檔中定義的資料表前綴)進行操作(包括CURD)了,M函數的用法還有很多,我們以後會深入了解。
定義好控制器後,我們修改範本文件,新增資料輸出標籤如下:
我們訪問
http://localhost/app/
會輸出
1--thinkphp
2--php
3--framework
如果你看到了上面的輸出結果,那麼你已經恭喜你已經拿到了入門ThinkPHP的鑰匙!
總結
本篇我們學習了ThinkPHP的目錄結構、URL模式和如何建立專案的入口檔案和控制器、模板,後面會繼續了解對資料的CURD操作。
以上就是ThinkPHP3.1快速入門(1)基礎的內容,更多相關內容請關注PHP中文網(www.php.cn)!