ThinkPHP學習筆記(1)

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 輕量級框架,國人框架,入門容易

 

什麼是框架:

    一堆代碼的集合,裏邊有變量、函數、類、常量,裏邊也有很多設計模式MVCAR數據庫、單例等

框架可以節省我們50-60%的工作量,我們全部精力都集中在業務層次。

 

爲什麼使用框架

框架可以幫我們快速、文帝你不敢、高效搭建程序

該系統由於框架的使用使得本身的維護性、靈活性、適應客戶需求方面得到最大化的增強

使用框架的過程使得我們的注意力全部集中業務層面,而無需關心程序的底層架構

 

 

【使用框架】

官網:www.thinkphp.cn

 

 

 

使用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.phps=/模塊/控制器/方法  兼容模式

 

具體url地址模式配置(配置文件ThinkPHP/Conf/convertion.php)

URL_MODEL =0/1/2/3  分別對應四種url地址模式

 

 

 

Config.php是我們當前自己項目的配置文件,我們可以通過修改該文件達到配置變量的目的

這個文件在系統運行過程中會覆蓋convertion.php的配置變量

Include “convertion.php”;

Include “config.php”

後引入的文件要把先引入的文件配置變量給覆蓋掉

 

我們系統有兼容4url地址模式的使用

 

系統有的時候會自動創建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.引入CSSjsimage

  A)以上三樣東西,瀏覽器需要發送單獨的http請求

  B)引入CSS的時候,以User控制器標誌作爲當前目錄,顯然不行

以上目錄設置不利於後期維護,例如其中的目錄有修改,就需要全部修改,有很多重複勞動

優化後:利用常量把路徑給定義好,後期只維護一個常量即可

 

Tp框架默認引擎的常量使用

{$Think.const.名稱}

 

模板與tp框架整合

1.引靜態代碼

2.引入cssimgjs文件

3.在入口文件地方把cssimgjs的路徑設置常量

4.在模板中通過常量獲取具體的cssimg等文件信息

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(“[模塊/]控制器標誌/操作方法”) 實例化控制器對象同時調用指定對象

 

【框架執行流程分析】

 

 

【反射機制】

發佈了33 篇原創文章 · 獲贊 10 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章