簡介
免費開源,面向對象的輕量級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
建議在開發階段一直開啓,正式部署關閉調試模式.'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執行監聽.
查詢數據:
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類的查詢默認返回的是數組(或者集合),模型類返回的是當前的模型對象實例(或者集合)
接口數據統一以JSON格式數據輸出到客戶端.
應用在ThinkPHP中是一個管理系統架構和生命週期的對象,由系統的thinkApp類完成,應用一般在入口文件中被調用和執行,一個應用可能存在多個入口文件(綁定不一樣的模塊或使用不一樣的設置),
路由用來規劃請求的訪問地址.
應用具備本身獨立的配置文件、公共(函數)文件和路由定義文件。
路由