1. 程式人生 > >thinkphp學習(一)——安裝ThinkPHP5

thinkphp學習(一)——安裝ThinkPHP5

目錄:

一、Git安裝ThinkPHP

1、環境要求:

  • PHP >=5.4.0
  • PDO PHP Extension
  • MBstring PHP Extension
  • CURL PHP Extension

2、安裝

ThinkPHP無需安裝,這裡所說的安裝是把ThinkPHP5的框架放入WEB執行環境中(前提是已經配置好WEB執行環境),以下僅介紹Git安裝方式,更多安裝方式(如官網下載安裝、Composer安裝)請點選前往官方開發手冊:https://www.kancloud.cn/manual/thinkphp5/118006

【Git】

在Git上ThinkPHP5.0拆分為多個倉庫,主要包括:

  • 應用專案:https://github.com/top-think/think
  • 核心框架:https://github.com/top-think/framework

為了支援Composer單獨更新核心框架,所以才將應用和核心倉庫分離。

如果訪問github速度比較慢,可以使用下面兩個國內GIT倉庫

【碼雲】

  • 應用專案:https://gitee.com/liu21st/thinkphp5
  • 核心框架:https://gitee.com/liu21st/framework.git

【Coding】

  • 應用專案:https://git.coding.net/liu21st/thinkphp5.git
  • 核心框架:https://git.coding.net/liu21st/framework.git

首先克隆下載應用專案:

git clone https://github.com/top-think/think tp5

然後切換到tp5目錄下,再克隆核心框架:

git clone https://github.com/top-think/framework thinkphp

克隆完成後,即完成了ThinkPHP5.0的Git下載方式,當需要更新框架的時候,只需要切換到thinkphp核心目錄下面,執行:

git pull https://github.com/top-think/framework

在瀏覽器中輸入地址:

http://localhost/tp5/public/

如果瀏覽器輸出如圖所示:
這裡寫圖片描述

就說明已經完成了ThinkPHP5的安裝!

二、目錄結構介紹

下載最新版ThinkPHP框架後,解壓縮後可以看到初始的目錄結構如下:

project  應用部署目錄
├─application           應用目錄(可設定)
│  ├─common             公共模組目錄(可更改)
│  ├─index              模組目錄(可更改)
│  │  ├─config.php      模組配置檔案
│  │  ├─common.php      模組函式檔案
│  │  ├─controller      控制器目錄
│  │  ├─model           模型目錄
│  │  ├─view            檢視目錄
│  │  └─ ...            更多類庫目錄
│  ├─command.php        命令列工具配置檔案
│  ├─common.php         應用公共(函式)檔案
│  ├─config.php         應用(公共)配置檔案
│  ├─database.php       資料庫配置檔案
│  ├─tags.php           應用行為擴充套件定義檔案
│  └─route.php          路由配置檔案
├─extend                擴充套件類庫目錄(可定義)
├─public                WEB 部署目錄(對外訪問目錄)
│  ├─static             靜態資源存放目錄(css,js,image)
│  ├─index.php          應用入口檔案
│  ├─router.php         快速測試檔案
│  └─.htaccess          用於 apache 的重寫
├─runtime               應用的執行時目錄(可寫,可設定)
├─vendor                第三方類庫目錄(Composer)
├─thinkphp              框架系統目錄
│  ├─lang               語言包目錄
│  ├─library            框架核心類庫目錄
│  │  ├─think           Think 類庫包目錄
│  │  └─traits          系統 Traits 目錄
│  ├─tpl                系統模板目錄
│  ├─.htaccess          用於 apache 的重寫
│  ├─.travis.yml        CI 定義檔案
│  ├─base.php           基礎定義檔案
│  ├─composer.json      composer 定義檔案
│  ├─console.php        控制檯入口檔案
│  ├─convention.php     慣例配置檔案
│  ├─helper.php         助手函式檔案(可選)
│  ├─LICENSE.txt        授權說明檔案
│  ├─phpunit.xml        單元測試配置檔案
│  ├─README.md          README 檔案
│  └─start.php          框架引導檔案
├─build.php             自動生成定義檔案(參考)
├─composer.json         composer 定義檔案
├─LICENSE.txt           授權說明檔案
├─README.md             README 檔案
├─think                 命令列入口檔案

三、架構

ThinkPHP5.0應用基於MVC(Model模型-View檢視-Controller)的方式來組織。

MVC是一個設計模式,它強制性的使應用程式的輸入、處理和輸出分開。使MVC應用程式被分成三個核心部件:模型(M)、檢視(V)、控制器(C),它們各自處理自己的任務。

5.0的URL訪問受路由決定,如果關閉路由或者沒有匹配路由的情況下,則是基於:

http://serverName/index.php(或者其它應用入口檔案)/模組/控制器/操作/引數/值…

入口檔案

使用者請求的PHP檔案,負責處理一個請求(注意,不一定是URL請求)的生命週期,最常見的入口檔案是index.php,有時候也會為了某些特殊的需求而增加新的入口檔案,例如給後臺模組單獨設定的一個入口檔案admin.php或者一個控制器程式入口think 都輸入入口檔案。

應用

應用在ThinkPHP中是一個管理系統架構及生命週期的物件,由系統的\think\App類完成,應用通常在入口檔案中被呼叫執行,具有相同的應用目錄(APP_PATH)的應用我們認為是同一個應用,但一個應用可能存在多個入口檔案。

應用具有自己獨立的配置檔案、公共(函式)檔案。

模組

一個典型的應用是由多個模組組成的,這些模組通常都是應用目錄下面的一個子目錄,每個模組都有自己獨立的配置檔案、公共檔案和類庫檔案。

5.0支援單一模組架構設計,如果你的應用下面只有一個模組,那麼這個模組的子目錄可以省略,並且在應用配置檔案中修改:

'app_multi_module' =>   false,

控制器

每個模組擁有獨立的MVC類庫及配置檔案,一個模組下面有多個控制負責響應請求,而每個控制器其實就是一個獨立的控制器類。

控制器主要負責請求的接受,並呼叫相關的模型處理,並最終通過檢視輸出。嚴格來說,控制器不應該過多的介入業務邏輯處理。

5.0的控制器類比較靈活,可以無需繼承任何基礎類庫。

一個典型的Index控制器類如下:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'hello,thinkphp!';
    }
}

操作

一個控制器包含多個操作(方法),操作方法是一個URL訪問的最小單元。

下面是一個典型的Index控制器的操作方法定義,包含了兩個操作方法:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'index';
    }

    public function hello($name)
    {
        return 'Hello,'.$name;
    }
}

操作方法可以不使用任何引數,如果定義了一個非可選引數,則該引數必須通過使用者請求傳入,如果是URL請求,則通常是$_GET或者 $_POST方式傳入。

模型

模型類通常完成實際的業務邏輯和資料封裝,並返回和格式無關的資料。

模型類不一定要訪問資料庫,而且在5.0的架構設計中,只有進行實際的資料庫查詢操作的時候,才會進行資料庫的連結,是真正的惰性連線。

ThinkPHP的模型支援多層設計,你可以對模型層進行更細化的設計和分工,例如把模型層分為邏輯層/服務層/事件層等等。

檢視

控制器呼叫模型類後返回的資料通過檢視組裝成不同格式的輸出。檢視根據不同的需求,來決定呼叫模板引擎進行內容解析後輸出還是直接輸出。

驅動

系統很多的元件都採用驅動式設計,從而可以更靈活的擴充套件,驅動類的位置預設是放入核心類庫目錄下面,也可以重新定義驅動類庫的名稱空間而改變驅動的檔案位置。

行為

為(Behavior)是在預先定義好的一個應用位置執行的一些操作。類似於AOP程式設計中的“切面”的概念,給某一個切面繫結相關行為就成了一種類AOP程式設計的思想。所以,行為通常是和某個位置相關,行為的執行時間依賴於繫結到了哪個位置上。

要執行行為,首先要在應用程式中進行行為偵聽,例如:

// 在app_init位置偵聽行為
\think\Hook::listen('app_init');

然後對某個位置進行行為繫結:

// 繫結行為到app_init位置
\think\Hook::add('app_init','\app\index\behavior\Test');

一個位置上如果綁定了多個行為的,按照繫結的順序依次執行,除非遇到中斷。

名稱空間

ThinkPHP5採用了PHP的名稱空間進行類庫檔案的設計和規劃,並且符合PSR-4的自動載入規範。