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

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

Dec 20, 2016 am 11:29 AM

簡介

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Python學習:如何在系統中安裝pandas函式庫 Python學習:如何在系統中安裝pandas函式庫 Jan 09, 2024 pm 04:42 PM

快速入門:Python安裝pandas函式庫的方法,需要具體程式碼範例一、概述Python是一種廣泛使用的程式語言,它擁有強大的開發生態系統,其中包括許多實用的程式庫。而pandas是其中一款非常受歡迎的資料分析庫,它提供了高效的資料結構和資料分析工具,使得資料處理和分析變得更加簡單。本文將介紹如何在Python中安裝pandas庫,並提供對應的程式碼範例。二、安裝Py

快速入門Mojs動畫庫:爆炸模組指南 快速入門Mojs動畫庫:爆炸模組指南 Sep 02, 2023 pm 11:49 PM

我們透過學習如何使用mojs為HTML元素添加動畫來開始本系列。在第二個教學中,我們繼續使用Shape模組製作內建SVG形狀的動畫。第三個教學介紹了使用ShapeSwirl和stagger模組對SVG形狀進行動畫處理的更多方法。現在,我們將學習如何使用Burst模組以突發形式製作不同SVG形狀的動畫。本教程將取決於我們在前三個教程中介紹的概念。如果您還沒有閱讀過它們,我建議您先閱讀它們。創建基本連拍動畫在創建任何突發動畫之前,我們需要做的第一件事是實例化Burst物件。之後,我們可以指定不同屬性

快速入門:使用Go語言函數實現簡單的音訊串流服務 快速入門:使用Go語言函數實現簡單的音訊串流服務 Jul 29, 2023 pm 11:45 PM

快速入門:使用Go語言函數實現簡單的音訊串流服務引言:音訊串流服務在今天的數位化世界中越來越受歡迎,它可以讓我們透過網路直接播放音訊文件,而無需進行完整的下載。本文將介紹如何使用Go語言函數來快速實現一個簡單的音訊串流服務,以便您能更好地理解和使用這項功能。第一步:準備工作首先,您需要安裝Go語言的開發環境。您可以從官方網站(https://golan

快速入門:使用Go語言函數實現簡單的圖像辨識功能 快速入門:使用Go語言函數實現簡單的圖像辨識功能 Jul 30, 2023 pm 09:49 PM

快速入門:使用Go語言函數實現簡單的影像辨識功能在現今的科技發展中,影像辨識技術已成為一個熱門的話題。作為一種快速且有效率的程式語言,Go語言具備了實現影像辨識功能的能力。本文將透過使用Go語言函數實現簡單的圖像辨識功能,為讀者提供一個快速入門的指南。首先,我們需要安裝Go語言的開發環境。可在Go語言官方網站(https://golang.org/)上下載適

推薦五款Go語言常用框架,讓您快速入門 推薦五款Go語言常用框架,讓您快速入門 Feb 24, 2024 pm 05:09 PM

Title:快速上手:五款Go語言常用框架推薦近年來,隨著Go語言的流行,越來越多的開發者選擇採用Go進行專案開發。 Go語言以其高效、簡潔和性能優越等特點受到了廣泛關注。在Go語言開發中,選擇適合的框架能夠提高開發效率和程式碼品質。本文將介紹五款Go語言常用框架,並附上程式碼範例,幫助讀者快速上手。 Gin框架Gin是一個輕量級的web框架,具有快速高效的特點,

學習使用五種Kafka視覺化工具的快速入門 學習使用五種Kafka視覺化工具的快速入門 Jan 31, 2024 pm 04:32 PM

快速入門:五種Kafka視覺化工具的使用指南1.Kafka監控工具:簡介ApacheKafka是一種分散式發布-訂閱訊息系統,它可以處理大量的數據,並提供高吞吐量和低延遲。由於Kafka的複雜性,需要使用視覺化工具來幫助監控和管理Kafka叢集。 2.Kafka視覺化工具:五大選擇KafkaManager:KafkaManager是一個開源的Web界

快速入門:使用Go語言函數實現簡單的資料聚合功能 快速入門:使用Go語言函數實現簡單的資料聚合功能 Jul 29, 2023 pm 02:06 PM

快速入門:使用Go語言函數實現簡單的資料聚合功能在軟體開發中,我們經常會遇到需要對一組資料進行聚合的情況。聚合操作可以統計、匯總、計算等,對資料進行分析展示。而在Go語言中,我們可以使用函數來實作簡單的資料聚合功能。首先,我們需要定義一個資料類型來表示我們要進行聚合的資料。假設我們有一個學生的成績表,每個學生有姓名和成績兩個字段,那麼我們可以創建如下的結構

快速入門:使用Go語言函數實現簡單的視訊串流服務 快速入門:使用Go語言函數實現簡單的視訊串流服務 Aug 01, 2023 pm 02:29 PM

快速入門:使用Go語言函數實現簡單的視訊串流服務引言:視訊串流服務在現代應用中扮演著重要角色。本文將介紹如何使用Go語言函數來實作一個簡單的影片串流服務。我們將使用Go語言的net/http套件來處理HTTP請求,並結合FFmpeg函式庫來處理視訊串流的編解碼。步驟一:安裝FFmpeg在開始寫程式之前,我們需要先安裝FFmpeg函式庫。可透過FFmpeg官方網站

See all articles