首頁 >php教程 >PHP开发 >ThinkPHP3.1快速入門(1)基礎

ThinkPHP3.1快速入門(1)基礎

黄舟
黄舟原創
2016-12-20 11:29:271183瀏覽

簡介

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';

這行程式碼的功能就是載入ThinkPHP框架的入口檔案ThinkPHP.php,這是所有基於ThinkPHP開發應用的第一步。

然後,在瀏覽器中存取這個入口檔案。

http://localhost/app/

一般Web伺服器的預設檔案是index.php,所以我們可以不需要在URL位址中加上index.php。運作後我們會看到歡迎頁面,

自動產生了專案目錄,目錄結構如下:

├─index.php     專案入口檔案ThinkPHP3.1快速入門(1)基礎專案

├專案─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

://localhost/app/index.php/module-action-var-value/

REWRITE模式:是在PATHINFO模式的基礎上添加了重寫規則的支持,可以去掉URL位址裡面的入口文件index.php ,但是需要額外配置WEB伺服器的重寫規則。

如果是Apache則需要在入口文件的同級添加.htaccess文件,內容如下:

RewriteEngine on

RewriteCond %{REPw. AME} ! -f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

接下來,就可以用下面的URL位址存取了:

http://localhost/ app/module/action/var/value/

相容模式:是用於不支援PATHINFO的特殊環境,URL位址是:

http://localhost/app/?s=/module/action/var/value /

相容模式配合Web伺服器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。

 

視圖

ThinkPHP內建了一個編譯型模板引擎,也支援原生的PHP模板,也提供了包括Smarty在內的模板引擎驅動。和Smarty不同,ThinkPHP在渲染模板的時候如果不指定模板,則會採用系統預設的定位規則,其定義規格是 Tpl/模組名稱/操作名稱.html,所以,Index模組的index操作的預設範本檔案位於專案目錄下面的Tpl/Index/index.html。

例如:

 

   

hello {$name}

 

 

要輸出視圖,必須在控制器方法中進行模板渲染輸出操作,例如:

class IndexAction extends Action {

     // 進行模板變數賦值

        $this->display();

    }

}

display方法中我們沒有指定任何模板,所以按照系統預設的定義了模板,所以按照系統預設值/html/html。

接下來,我們在瀏覽器中輸入

http://localhost/app/

瀏覽器中會輸出

hello,thinkphp!

 

inkphp

中建立一個think_data資料表(以mysql資料庫為例):

CREATE TABLE IF NOT EXISTS `think_data` (

  `id` int(8) signed 55) NOT NULL ,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

INSERT INTYO`think_UEdata`(``ths`&F)(`idink_UE:``think_UE:``think_UE:``th. ),

(2, 'php'),

(3, 'framework');

如果我們需要讀取資料庫中的數據,就需要在專案設定檔中新增資料庫連接資訊如下:

// 新增資料庫配置資訊

'DB_TYPE'   => 'mysql', // 資料庫型別

'DB_HOST'   => 'localhost', // 伺服器位址

🠎🠎>

'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函數的用法還有很多,我們以後會深入了解。

定義好控制器後,我們修改範本文件,新增資料輸出標籤如下:


 


   Select Data

   Select Data

  Select Data <p></p>    <volist><p></p>    {$vo.id}--{$vo.data}<br><p></p> /html><p></p>volist標籤是內建模板引擎用於輸出資料集的標籤。 {$vo.id} 和 {$vo.data} 的用法和Smarty類似,就是用於輸出資料的字段,這裡就表示輸出think_data表的id和data字段的值。 <p>我們訪問</p> <p>http://localhost/app/<br><br>會輸出</p> <p>1--thinkphp</p> <p>2--php</p> <p>3--framework</p> <p>如果你看​​到了上面的輸出結果,那麼你已經恭喜你已經拿到了入門ThinkPHP的鑰匙! </p> <p> </p> <p>總結</p> <p>本篇我們學習了ThinkPHP的目錄結構、URL模式和如何建立專案的入口檔案和控制器、模板,後面會繼續了解對資料的CURD操作。 </p> <p> 以上就是ThinkPHP3.1快速入門(1)基礎的內容,更多相關內容請關注PHP中文網(www.php.cn)! <br></p> <p><br></p></volist>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn