一. ThinkPHP架構
1. 什麼是架構
php架構是許多代碼的集合,這些代碼是程式結構的代碼(并不是業務代碼)代碼中有許多函數、類、功能類包,架構的代碼按照一定标準組成了一個有機的功能體,這個功能體裡邊有許多設計模式如MVC、單例、AR等等。
2. 不使用架構開發遇到的問題
① 代碼編寫沒有統一規範,項目生命時間非常短,不延續
② 一個小地方的修改會牽扯到全局變化,牽一發動全身
③ 不能很好滿足客戶各方面需求
3. 使用架構的好處
① 架構可以幫助我們快速、穩定、高效搭建程式系統
② 該系統由于架構的使用使得本身的維護性、靈活性、适應客戶需求方面得到最大化的增強。
③ 使用架構的過程中可以使得我們的注意力全部集中在業務層面,而無需關心程式的底層架構。
④ 可以節省很多的代碼工作量
4. 相關架構
① zendframework
php語言公司zend釋出的官方架構,有許多OOP面向對象内容,功能非常豐富,重量級架構(進階語言、功能豐富)
重量級:① 語言級别(進階語言OOP)② 功能豐富
輕量級:① 語言級别(面向過程或有少許OOP)② 功能相對較少但是實用
進階語言:例如java、C++ 是用類對變量、函數的封裝
中級語言:例如C,面向過程,是用變量、函數對中低語言代碼的封裝
(中低級)語言:例如彙編語言,比低級語言再進階一點的語言,是對二進制代碼的封裝
if---->000111 function----->11110001111
低級語言:二進制代碼語言
②
Yii
國人(華人)自己開發的架構,名字(xue qiang),重量級架構,純OOP架構,該架構的特點是把代碼的重用性發揮到了極緻。速度非常快。外企使用量最多的架構之一。
該架構思想來源于symfony、jquery等。
作者之前是prado架構的核心維護人員,維護該架構3年之久。
③ cakephp
CakePHP是一個運用了諸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名設計模式的快速開發架構。該架構的主要目标是讓各種層次的PHP開發人員都能快速靈活地開發健壯的Web應用。
④symfony
Symfony是一個基于MVC模式的面向對象的PHP5架構
⑤ ThinkPHP
輕量級架構。内部OOP和面向過程代碼都純在,是國人自己開發的架構。
ThinkPHP是一個開源的PHP架構,是為了簡化企業級應用開發和靈活WEB應用開發而誕生的。最早誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,并且遵循Apache2開源協定釋出。早期的思想架構來源于Struts,後來經過不斷改進和完善,同時也借鑒了國外很多優秀的架構和模式,使用面向對象的開發結構和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标簽庫)、RoR的ORM映射和ActiveRecord模式,封裝了CURD和一些常用操作,單一入口模式等,在模版引擎、緩存機制、認證機制和擴充性方面均有獨特的表現。
5. 架構檔案介紹
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXzUFRNlXSE90MZRkTxhGSaZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM2MjM1czM0EjNyITM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXzUFRNlXSE90MZRkTxhGSaZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM2MjM1czM0EjNyITM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
二. 建立應用
開發項目
設定項目運作目錄,并複制ThinkPHP目錄過來:
使用同一個thinkphp架構可以開發多個系統:
給shop應用建立index.php入口檔案:
在index.php入口檔案裡邊引入架構的接口檔案:
為shop項目目錄建立虛拟主機(apache)
之後重新開機apache
在hosts檔案中做域名解析:
在浏覽器裡邊通路shop項目:
第一次通路項目的時候,項目被自動建立出來對應的三個目錄:
第一次做項目請求,請求的是index.php索引檔案
該架構使用mvc設計模式,預設使用Index控制器的index操作方法
三.路由形式
什麼是路由:
答:系統從URL參數中分析出目前請求的分組(平台)、控制器和操作方法的過程就是“路由”。
tp架構路由共有4種形式:
① 基本get形式
http://網址/index.php?m=分組&c=控制器&a=操作方法
該方式是最底層的get形式、傳統的參數傳遞方式,不時尚、不安全。
② pathinfo路徑形式[預設方式]
http://網址/index.php/分組/控制器/操作方法
http://網址/index.php/Home/Index/advert
③ rewrite重寫形式(僞靜态技術)省略index.php入口檔案
http://網址/分組/控制器/操作方法
http://網址/Home/Index/index
④ 相容形式
http://網址/index.php?s=/分組/控制器/操作方法
http://網址/index.php?s=/Home/Index/advert
以上四種模式除了第③種,其他的url模式都可以使用
四. 建立控制器
mvc架構需要根據業務特點建立對應的不同控制器,
例如 UserController GoodsController OrderController IndexController等等
五.view視圖模闆
1. 簡單模闆view調用
在控制器的方法中調用如下方法:
$this -> display(); //模闆名稱與目前操作方法的名稱一緻
$this -> display(模闆名稱); //調用目前控制器對應目錄指定名稱的模闆
$this -> display(控制器/模闆名稱); //調用其他控制器下的具體模闆檔案
tp架構有兩種模式:生成模式[預設]、開發調試模式
生産模式 的 錯誤提示不友好(開發調試模式錯誤提示較友好):
2. 已有模闆與tp架構做結合
具體實作步驟:
a. 複制模闆檔案(内容)到View指定目錄
b.複制css、img、js靜态資源檔案到系統指定目錄
c. 把靜态資源(css、img、js)檔案的路徑設定為“常量”資訊(在index入口檔案設定)
d. 在模闆檔案中通過常量引入靜态資源(css、img、js)檔案
後續a、d重複實作即可
2.1靜态資源檔案引入
css、img、js檔案拷貝到系統指定目錄:
2.2 在模闆中引入靜态資源檔案
<link href="路徑設定" target="_blank" rel="external nofollow" rel="stylesheet" type="text/css" />
路徑設定:相對路徑、絕對路徑
在模闆中需要通過絕對路徑方式引入靜态資源檔案(css/img/js),絕對路徑資訊的編寫、更新、維護不友善,就給其設定常量進行使用。
六.背景頁面搭建
1. 分組設定
項目裡邊有前台、背景
前台、背景本質上看都是“控制器”和“view視圖”模闆的集合
為了開發、維護比較友善要把前台、背景對應的控制器和視圖模闆分開存儲
前台、背景分别存儲的控制器和view視圖模闆的集合稱為是一個“平台/分組”
分組:
同一個項目裡邊,由于業務規則的劃分,有多個相關的功能子產品,它們都有獨立的控制器、view視圖、配置檔案、函數庫檔案等檔案,為了開發維護友善,就給它們建立獨立的分組出來,每個分組都有自己的控制器、view視圖、配置檔案、函數庫檔案。
如果還有其他的業務功能子產品,也都是獨立的,可以繼續建立分組。
對分組進行通路:
http://網址/index.php/分組/控制器/操作方法