後端_ThinkPHP5

簡介
免費開源,面向對象的輕量級PHP開發框架,實現懶性加載,靈活的路由,依賴注入,請求緩存,查詢語法,支持Composer.php

Git安裝:css

git clone https://github.com/top-think/think   再 clone https://github.com/top-think/framework 將名稱改成thinkphp
運行環境: PHP >= 5.4.0 (完美支持PHP7), PDO PHP Extension, MBstring PHP Extension  ,CURL PHP Extension

目錄命名:html

|─application           應用目錄(可設置)
     │  ├─common             公共模塊目錄(可更改)
     │  │  ├─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                 命令行入口文件
     注意,若是是mac/linux環境下,請確保runtime目錄有可寫權限,建議public目錄做爲web目錄訪問內容.

命名規範:linux

  • 目錄使用小寫+下劃線,類庫,函數文件統一以.php爲後綴;
  • 類名和文件名保持一致,以駱駝峯命名法(首字母大寫);
  • 函數的命名使用小寫字母和下劃線的方式,方法的命名
  • 使用駱駝峯法(首字母小寫),屬性的命名使用駱駝峯(首字母小寫);
  • 常量以大寫字母和下劃命名,配置參數以小寫字母和下劃線命名.
  • 數據表和字段採用小寫加下劃線方式命名,並注意字段名不要如下劃線開頭.

調試模式和日誌

建議在開發階段一直開啓,正式部署關閉調試模式.'app_debug' =>false, 可配置.env文件的格式 app_debug = true 但定義以後,配置文件中定義app_debug將無效.
ThinkPHP配置的加載順序爲慣例配置>應用配置>模塊配置>動態配置git

URL和路由:
路由讓URL更加規範,隱式傳入額外請求參數,統一攔截並進行權限檢查等操做.綁定請求參數,使用請求緩存,路由中間件支持.
採用單一入口模式訪問應用,對應用的全部請求都定向到應用的入口文件,系統會從URL參數解析當前請求的模塊,控制器和操做.路由功能由thinkRouter類完成。
路由具備URL規範,實現驗證,權限,參數綁定以及響應設置等功能.
路由解析的過程: 路由定義-->路由檢測-->路由解析->路由調度github

格式:http://serverName/index.php/module/controller/action/param/value/...

入口文件:能夠去掉URl地址裏面的入口文件index.php,使用PHPStudy則修改Public下的.htaccess文件.web

<IfModule mod_rewrite.c> 
Options +FollowSymlinks -Multiviews 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] 
</IfModule>

參數傳入,經過操做方法的參數綁定功能,能夠實現自動獲取URL的參數.thinkphp

public function hello($name = 'world')
 {
  return $name;
 }

視圖
新建一個view/index.html 在控制器作一下修改.數據庫

use think\Controller;

class Index extends Controller
{
    public function hello($name = 'thinkphp')
    {
        $this->assign('name', $name);
        return $this->fetch();
    }
}

控制器

每一個模塊都有獨立的類庫以及配置文件,一個模塊下面有多個控制器負責響應請求,而每一個控制器就是一個獨立的控制器類.
控制器主要負責請求的接收,並調用相關的模型處理,並經過視圖輸出.apache

請求和響應:
Request請求對象和Response響應對象的基本用法與獲取請求變量,以及進行不一樣的輸出響應,跳轉,和頁面重定向.
Request對象的做用是與客戶端交互,收集客戶端的Form,Cookies,超連接,或者收集服務器的環境變量.ThinkPHP5的Request對象由thinkRequest類完成.

數據庫: Db類操做數據庫。
類拆分爲Connection(鏈接器)/Query(查詢器)/Builder(SQL生成器),查詢語法,閉包查詢和閉包事務,鏈式操做,數據分批處理和數據庫SQL執行監聽.

  • 數據查詢由低到高分三個層次:數據庫原生查詢(SQL查詢),數據庫鏈式查詢(查詢構造器),模型的對象化查詢;
  • ThinkPHP內置抽象數據庫訪問層,把不一樣的數據庫封裝起來,只須要使用公共的Db類進行操做,而無需針對不一樣的數據庫寫不一樣的代碼和底層實現.
  • 使用數據庫必須配置數據庫連接信息,有多種方法定義,如配置文件定義(database.php),方法配置,模型類定義.若是使用多個模塊,不一樣模塊採用不一樣的數據庫鏈接,每一個模塊下面單獨定義數據庫配置
  • 配置連接數據庫以後,可使用數據庫運行原生SQL操做,支持query(查詢操做)和excute(寫入操做)方法而且支持參數綁定.
  • 查詢構造器: 查詢數據,添數據加,更新數據,刪除數據,查詢方法,查詢語法,鏈式操做,聚合查詢,時間查詢,高級查詢,視圖查詢,子查詢,原生查詢.

    查詢數據:

CREATE TABLE IF NOT EXISTS `think_data`(
    `id` int(8) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL COMMENT '名稱',
    `status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '狀態',
     PRIMARY KEY (`id`)
     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
    INSERT INTO `think_data`(`id`,`name`,`status`) VALUES
    (1,'thinkphp',1),
    (2,'onethink',1),
    (3,'topthink',1);
  • 本地新建數據庫,再新建數據表:

原生查詢,兩個方法query和execute,分別用於查詢操做和寫操做.數據庫查詢構造器,方便執行數據庫操做,構造器基於PDO實現,使用PDO參數綁定,保護應用程序免於SQL注入.

//插入記錄
#result = Db:execute('insert into think_data (id,name,status) values (5,"thinkphp",1)');
dump($result);

//更新記錄
$result = Db::excute('update think_data set name = "framework" where id = 5 ');
dump($result);

//讀取
$result = Db::query('select * form think_data where id = 5');
dump($result);
//query方法返回一個數據集(數組),若是沒有查詢到數據則返回空數組.

//刪除delete
$result = Db::excute('delete form think_data where id =5');
dump($result);

// 顯示數據庫列表
$result = Db::query('show tables from demo');
dump($result);
// 清空數據表
$result = Db::execute('TRUNCATE table think_data');
dump($result);
//切換數據庫操做: 略.

查詢語言
ThinkPHP5.0的查詢語法,以及如何使用查詢構建器進行查詢操做,

模型和關聯

ThinkPHP採用ORM的封裝,基本特性就是表映射到模型,記錄映射到模型對象實例,字段映射到對象屬性.Db類的查詢默認返回的是數組(或者集合),模型類返回的是當前的模型對象實例(或者集合)

API開發

接口數據統一以JSON格式數據輸出到客戶端.

注意

  • 不要在public目錄以外的任何位置放置資源文件,包括application目錄,web目錄要放到i
  • 入口文件能夠被隱藏.
  • php think build --module demo 快速新建模塊

架構

應用在ThinkPHP中是一個管理系統架構和生命週期的對象,由系統的thinkApp類完成,應用一般在入口文件中被調用和執行,一個應用可能存在多個入口文件(綁定不一樣的模塊或使用不一樣的設置),
路由用來規劃請求的訪問地址.

應用具備本身獨立的配置文件、公共(函數)文件和路由定義文件。

路由

相關文章
相關標籤/搜索