ThinkPHP3快速入門教程-:基礎


一、ThinkPHP的認識:

ThinkPHP是一個快速、簡單的基於MVC和面向對象的輕量級PHP開發框架

二、下載后的目錄結構:

├─ThinkPHP.php     框架入口文件

 ├─Common 框架公共文件

 ├─Conf 框架配置文件

 ├─Extend 框架擴展目錄

 ├─Lang 核心語言包目錄

 ├─Lib 核心類庫目錄

 │  ├─Behavior 核心行為類庫

 │  ├─Core 核心基類庫

 │  ├─Driver 內置驅動

 │  │  ├─Cache 內置緩存驅動

 │  │  ├─Db 內置數據庫驅動

 │  │  ├─TagLib 內置標簽驅動

 │  │  └─Template 內置模板引擎驅動

 │  └─Template 內置模板引擎

 └─Tpl 系統模板目錄

 

注意,框架的公共入口文件ThinkPHP.php是不能直接執行的,該文件只能在項目入口文件中調用才能正常運行。

三、入口文件:

默認入口:public/index.php(實際部署的時候public目錄為你的應用對外訪問目錄)

引入入口文件:

<?php

require ‘/ThinkPHP框架所在目錄/ThinkPHP.php’;

?>

訪問路徑:http://localhost/app/

自動生成項目目錄,目錄結構如下:

├─index.php     項目入口文件

 ├─Common 項目公共文件目錄

 ├─Conf 項目配置目錄

 ├─Lang 項目語言目錄

 ├─Lib 項目類庫目錄

 │  ├─Action Action類庫目錄

 │  ├─Behavior 行為類庫目錄

 │  ├─Model 模型類庫目錄

 │  └─Widget Widget類庫目錄

 ├─Runtime 項目運行時目錄

 │  ├─Cache 模板緩存目錄

 │  ├─Data 數據緩存目錄

 │  ├─Logs 日志文件目錄

 │  └─Temp 臨時緩存目錄

 └─Tpl 項目模板目錄

移動修改目錄入口文件的路徑:

 

<?php

define(‘APP_NAME’,’app’);

define(‘APP_PATH’,’./app/’);

require ’/ThinkPHP框架所在目錄/ThinkPHP.php’;

?>

APP_NAMEAPP_PATH分部用於定義項目名和項目目錄,項目名通常就是指項目的目錄名稱。

四、調試模式:

ThinkPHP的運行模式包括調試模式和部署模式,默認情況下是運行在部署模式下面。部署模式下面性能優先,並且盡可能少地拋出錯誤信息,調試模式則以除錯方便優先,關閉任何緩存,而且盡可能多的拋出錯誤信息,所以對性能有一定的影響。

開啟調試模式(開發完后關閉)

<?php

define(‘APP_DEBUG’,TRUE);//開啟調試模式

require ‘/ThinkPHP框架所在目錄/ThinkPHP.php’;

?>

關閉調試模式:

define(‘APP_DEBUG’,false);

 

五、配置文件:

配置文件位於每個項目目錄的Conf/config.php,采用定義格式為php返回數組的方式。

//項目配置文件

return array{

配置參數’ => ‘配置值’,

//更多配置參數

//...

};

注意:

配置值可以支持包括字符串、數字、布爾值和數組在內的數據,通常我們建議配置參數均使用大寫定義。如果有需要,我們還可以為項目定義其他的配置文件。

六、使用控制器:

控制器類的命名規范:模塊名+Action.class.php(模塊名采用駝峰法並且首字母大寫)系統的默認模塊是Index,對應的控制器就是項目目錄下面的Lib/Action/IndexAction.class.php,類名和文件名一致。默認操作是index的一個public方法。

初次生成項目目錄結構的時候,系統已經默認生成了一個默認控制器。

示例代碼:

class IndexAction extends Action {

Public function index(){

Echo ‘hello,world’;

}

}

注意:

控制器必須繼承Action類,一個模塊可以包括多個操作方法。如果你的操作方法是protected或者private類型的話,是無法直接通過URL訪問到該操作的。

 

七、URL請求

入口文件是項目的單一入口,對項目的所有請求都定向到項目的入口文件,系統會從URL參數中解析當前請求的模塊和操作,我們之前訪問的URL地址是沒有任何參數,因此系統會訪問默認模塊(Index)的默認操作(index),因此下面的訪問和之前是等效的:

http://localhost/app/index.php/Index/index

這種URL模式就是系統默認的PATHINFO模式,不同的URL模式獲取模塊和操作的方法不同。

 

普通模式:也就是傳統的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/

Module(第一參數)表示模塊,

Action(第二參數)表示操作,

 

可定制方式:例如通過下面的配置:

'URL_PATHINFO_DEPR'=>'-', // 更改PATHINFO參數分隔符

還可支持

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

URL訪問。

 

REWRITE模式:

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

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

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

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

</IfModule>

下面的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

例如:

<html>

<head>

<title>hello {$name}</title>

</head>

<body>

Hello,{$name}!

</body>

</html>

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

Class IndexAction extends Action {

public function index(){

$this->name = ‘thinkphp’;//進行模板變量賦值

$this->display();

}

}

display方法中我們沒有指定任何模板,所以按照系統默認的規則輸出Index/index,html模板文件。

接下來,我們在瀏覽器中輸入:http://localhost/app/

瀏覽器中會輸出: hello,thinkPHP!

九、讀取數據

在開始之前,首先需在數據庫thinkphp中創建一個think_data數據表(以mysql數據庫為例):

建表:

CREATE TABLE IF NOT EXISTS ‘think_data’(

‘id’ int(8) unsigned NOT NULL AUTO_INCREMENT,

‘data’ varchar(255) NOT NULL,

PRIMARY KEY (‘id’) //主鍵

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

插入記錄:

INSERT INTO ‘think_data’(‘id’,’data’) VALUES

(1,’thinkphp’),

(2,’php’),

(3,’framework’);

 

配置連接數據庫相關信息:

 

//添加數據庫配置信息

‘DB_TYPE’     => ‘mysql’,        //數據庫類型

‘DB_HOST’     => ‘localhost’,   //服務器地址

‘DB_NAME’     => ‘thinkphp’   //數據名

‘DB_USER’     => ‘root’,   //用戶名

‘DB_PWD’      => ‘’,   //密碼

‘DB_PORT’     => 3306,   //端口

DB_PREFIX=> ‘think_’,   //數據表前綴

 

或采用如下配置:

 

‘DB_DSN’ => ‘mysql://root@localhost:3306/thinkphp’

 

注意:

使用DB_DSN方式定義可以簡化配置參數,DSN參數格式為:

數據庫類型://用戶名:密碼@數據庫地址:數據庫端口/數據庫名

 

如果兩種配置參數同時存在的話,DB_DSN配置參數優先。

 

修改控制器方法進行添加讀取數據:

Class IndexAction extends Action {

public function index(){

 

$Data = M(‘Data’); //實例化Data數據模型

$this -> data = $data -> select();

$this -> display();

}

}

這里用到了M函數,是ThinkPHP內置的實例化模型的方法,

使用M方法實例化模型不需要創建對應的模型類。

可理解為:

M();是直接操作底層的Model類,而Model類具備基本的CURD操作方法。

M(‘Data’)實例化后,就可以對think_data數據表(think_是我們在項目配置文件中定義的數據表前綴)進行操作(包括CURD)了。

定義好控制器后,我們修改模板文件,添加數據輸出標簽如下:

<html>

<head>

<title>Select Data</title>

</head>

<body>

<volist name=”data” id=”vo”>

{$vo.id}--{$vo.data}<br/>

</volist>

</body>

</html>

Volist標簽是內置模板引擎用於輸出數據集的標簽。

{$vo.id}{$vo.data}的用法和Smarty類似,就是用於輸出數據的字段,這里就表示輸出think_data表的iddata字段的值。

訪問路徑:http://localhost/app/

顯示輸出:

    Thinkphp

  php

  Framework

注意:

如果發生錯誤,請檢查你是否開啟了調試模式或者清空Runtime目錄下面的緩存文件。

總結:

在本篇我們學習了ThinkPHP的目錄結構、URL模式,如何創建項目的入口文件和開啟調試模式,以及控制器、模板和模型的基礎認識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM