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

簡介

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境