ThinkPHP
php框架
真實項目開發步驟:
1.多人同時開發項目,協作開發項目、分工合理、效率有提高(代碼風格不一樣、分工不好)
2.測試階段
3.上線運行
4.對項目進行維護、修改、升級(單人維護項目、十分困難,代碼風格不一樣)
5.項目穩定的運行階段
6.項目停止運行(舊項目的人員已經全部離職,新人開發新項目)
問題:
1.多人開發項目,分工不合理(html PHP mysql)
2.代碼風格不一樣,後期維護困難
3.項目生命週期十分短,項目生命沒有延續性,造成資源浪費、人員浪費
4.項目不能很好適應客戶需求,牽一髮而動全身
其他相關框架
1.zendframework zend php語言公司發佈的官方框架,重量級(功能多)
2.Yii 美國華人開發的框架,xue qiang,qiang,重量級框架,純OOP框架
3.CI CodeIgniter 輕量級框架,開發速度快,部署靈活
4.cakephp 外國框架,重量級,速度慢
5.symfony 外國重量級框架
6.ThinkPHP 輕量級框架,國人框架,入門容易
什麼是框架:
一堆代碼的集合,裏邊有變量、函數、類、常量,裏邊也有很多設計模式MVC、AR數據庫、單例等
框架可以節省我們50-60%的工作量,我們全部精力都集中在業務層次。
爲什麼使用框架
l 框架可以幫我們快速、文帝你不敢、高效搭建程序
l 該系統由於框架的使用使得本身的維護性、靈活性、適應客戶需求方面得到最大化的增強
l 使用框架的過程使得我們的注意力全部集中業務層面,而無需關心程序的底層架構
【使用框架】
使用ThinkPHP3.2.3完整版
源代碼目錄介紹
【項目框架部署】
Shop 商城項目
Book 圖書管理系統
Car 汽車銷售系統
三個項目可以使用一個公共的tp框架
步驟:
1.創建一個入口文件index.php
2.項目自動創建目錄
3.訪問入口文件的系統會自動把對應的文件創建出來
【控制器和對應方法的創建】
【路由解析】
通過url地址get參數找到制定的控制器,並進行對應方法調用請求
http://網址/index.php?m=模塊名稱&c=控制器&a=方法
以上utl地址信息代碼不夠優雅、不安全
Tp框架url地址可以有以下四種
1.http://網址/index.php?m=模塊名稱&c=控制器&a=方法 基本get方法
2.http://網址/index.php/模塊/控制器/操作方法 路徑模式pathinfo模式
3.http://網址/模塊/控制器/操作方法 rewrite重寫模式
4..http://網址/index.php?s=/模塊/控制器/方法 兼容模式
具體url地址模式配置(配置文件ThinkPHP/Conf/convertion.php)
URL_MODEL =0/1/2/3 分別對應四種url地址模式
Config.php是我們當前自己項目的配置文件,我們可以通過修改該文件達到配置變量的目的
這個文件在系統運行過程中會覆蓋convertion.php的配置變量
Include “convertion.php”;
Include “config.php”;
後引入的文件要把先引入的文件配置變量給覆蓋掉
我們系統有兼容4種url地址模式的使用
系統有的時候會自動創建url地址,它會根據當前模式進行url地址創建,使用U()函數創建url地址;
在入口文件index.php調整當前模式爲開發調試模式
通過url地址模式我們學習到了以下內容
1.我們學習到配置變量(核心配置變量convestion.php、當前應用配置變量config.php)
2.快捷函數U(“模塊/控制器/方法”) 根據參數和url模式,創建對應的url地址
3.把框架的模式調整爲開發調試模式
【開發、生產模式】
開發調試模式:系統需要加載24個文件,index.php define(“APP_DEBUG”,true);
生產模式:系統只需要加載7個文件,index.php define(“APP_DEBUG”,false);
節省了許多文件的打開、關閉的系統開銷,節省資源
觀察系統運行過程中生成的日誌文件:
1.做變量配置,convention.php,config.php
2.Tp框架配置變量:convention.php Behavior行爲文件 程序靈活設置
Behavior 行爲:ThinkPHP/Library/Behavior/*
ShowPageTraceBehavior.class.php
【控制器調用視圖view模板】
控制器和模板的關係
通常:在view目錄通常會有一個與控制器標誌一樣的目錄,裏邊有具體的模板文件
例如GoodsController.class.php控制器在view目錄有Goods目錄,裏面有Goods控制器對應的模板文件。
【視圖模板與項目整合】
1.引入靜態代碼
2.引入CSS、js、image
A)以上三樣東西,瀏覽器需要發送單獨的http請求
B)引入CSS的時候,以User控制器標誌作爲當前目錄,顯然不行
以上目錄設置不利於後期維護,例如其中的目錄有修改,就需要全部修改,有很多重複勞動
優化後:利用常量把路徑給定義好,後期只維護一個常量即可
Tp框架默認引擎的常量使用
{$Think.const.名稱}
模板與tp框架整合
1.引靜態代碼
2.引入css、img、js文件
3.在入口文件地方把css、img、js的路徑設置常量
4.在模板中通過常量獲取具體的css、img等文件信息
5.把css文件本身的圖片路徑設置正確(獲取圖片的相對文職是本身自己的css文件)
【url地址大小寫設置】
在config.php裏面對url大小寫敏感進行設置
引入文件:include “hello.php”; include “Hello.php”; 實際都會把指定文件找到hello.php
Tp框架本身自己做了額外設置:include “hello.php”; include “Hello.php”; 表示需要引入兩個不同的文件
【空操作和空控制器使用】
空操作:就是沒有指定的操作方法
空控制器:就是沒指定控制器
http://網址/index.php/Home/User/login
http://網址/index.php/Home/User/hello 空操作
http://網址/index.php/Home/beijing/login 空控制器
空操作
一般網站出於安全考慮不給用戶提示任何錯誤信息
空操作本質意思:一個對象(控制器)調用本身不存在的方法
在OOP裏邊,對象調用本身不存在的方法,出於用戶體驗比較好的角度考慮,我們可以在類裏面製作一個魔術方法function __call();
空操作有兩種解決方案:
(1)在對應的控制器裏面製作一個方法,,名稱爲“_empty”,這個控制器的空操作都會自動執行該方法(推薦使用)
(2)給空操作的名稱制作一個同名的模板出來,系統會自動調用
空控制器
http://www.1116.com/shop/index.php/Home/nanning/login
空控制器:在實例化控制器對象的時候,沒有找到指定的類
什麼時候實例化控制器對象:ThinkPHP/Library/Think/App.class.php
熟記文件:
Index.php 入口文件
ThinkPHP/ThinkPHP.php 框架核心文件
ThinkPHP/Library/Think/Think.class.php 框架核心文件
ThinkPHP/Library/Think/App.class.php 框架應用文件
App.class.php內部包括控制器對象創建,以及對象調用指定的方法呈現內容
空控制器處理方案:可以再製作一個控制器,名稱爲EmptyController.class.php
在該控制器內部其實只需要製作一個_empty方法即可
【項目分組】
系統有前臺用戶操作界面,
系統還有後臺供公司內部人員使用維護平臺
兩者在使用的過程就是對“控制器”、“視圖模板”、“模型”的操作
爲了系統開發方便,集代碼部署更加合理,我們的控制器、view視圖等前後臺文件不要混
在一起,要在物理結構上給分開
http://網址/index.php/Home/控制器/操作方法 訪問Home分組的控制器及指定操作
http://網址/index.php/Admin/控制器/操作方法 訪問Admin分組的控制器及指定操作
【後臺登陸頁面與框架的整合】
【跨控制器調用】
一個控制器在執行的時候,可以實例化另一個控制,並通過對象訪問器指定方法。
跨控制器調用可以節省我們代碼的工作量。
A(“[模塊/]控制器標誌”) 實例化控制器對象
R(“[模塊/]控制器標誌/操作方法”) 實例化控制器對象同時調用指定對象
【框架執行流程分析】
【反射機制】