TP框架基础(一)
【使用框架】
?官網(wǎng):thinkphp.cn. ?目前建議使用thinkPHP3.2版本
一、結(jié)構(gòu)目錄
》Thinkphp文件夾,是thinkPHP的核心文件,里面的內(nèi)容是不允許我們修改的
》Public是公有的文件夾,里面可以寫自己的東西
》Application 我們建立項目的文件夾(Public和Application里面原有自帶的文件可以刪除,相當于兩個空的文件夾)
》tp文件夾中的index.php 是所有程序的入口文件
》conf->convention.php 配置文件 包含了所有的配置
》thinkphp->conf 文件夾->配置文件,幾乎包括關(guān)于thinkPHP的所有配置.但是在這個文件夾中不可以修改。如果想要對thinkPHP進行配置的話,需要先在配置里查一下,配置變量的名字后,然后復制到自己項目的配置文件中,更改變量
》library文件夾->包含了幾乎所有的核心類,在library文件夾下的think文件夾里
》?Mode文件夾->模型
》Tpl文件夾->模板
【框架項目部署】
部署一個Shop項目,使用tp框架
步驟:
創(chuàng)建入口文件:
1.在ThinkPHP目錄下創(chuàng)建一個入口文件index.php,如果有直接使用就可以
?
View Code
?
》define 定義常量
? define('APP_DEBUG',True) ??
? true:開啟調(diào)試模式,建議開發(fā)階段開啟,這樣在開發(fā)時出錯才能報出很詳細的錯誤
? false:生產(chǎn)模式,出現(xiàn)錯誤不會報出詳細的錯誤信息,不利于開發(fā)
??
2.訪問入口文件的同時系統(tǒng)會自動把對應的應用目錄文件Shop創(chuàng)建出來
(訪問入口文件的時候,實際上訪問的是默認模塊里的默認控制器里的默認方法?)
3.打開Home文件夾
?
【MVC模式】?
M:Model 數(shù)據(jù)模型層,負責數(shù)據(jù)操作?
V:View 視圖層,負責顯示視圖(就是模板,靜態(tài)頁面)
C:Controller 控制器,實現(xiàn)業(yè)務(wù)邏輯
MVC模式里,我們訪問的不是具體的頁面,而是訪問的控制器,控制器會找到對應的模板進行顯示
【控制器訪問及路由解析】?
通過url地址get參數(shù)找到指定的控制器,并進行對應方法調(diào)用請求
http://網(wǎng)址/index.php?m=模塊名稱&c=控制器&a=方法
以上url地址信息代碼不夠優(yōu)雅、不安全。?
tp框架url地址可以由以下四種
1.http://網(wǎng)址/index.php?m=XX&c=XX&a=XX ??基本get模式 (a代表action操作?)
2.http://網(wǎng)址/index.php/模塊/控制器/操作方法??路徑模式pathinfo
3.http://網(wǎng)址/模塊/控制器/操作方法???????????rewrite重寫模式
4.http://網(wǎng)址/index.php?s=/模塊/控制器/方法????兼容模式?
具體url地址模式設(shè)置(配置文件ThinkPHP/Conf/convertion.php)
URL_MODEL ?= ?0/1/2/3 ?分別代表四種url地址模式
?
config.php是我們當前自己項目的配置文件,我們可以通過修改該文件達到配置變量的目錄
這個文件在系統(tǒng)運行過程中會覆蓋convertion.php的配置變量
include “convertion.php”;
include “config.php”; ?后引入的文件要把先引入的文件配置變量給覆蓋掉
?
我們系統(tǒng)有兼容4中url地址模式的使用
系統(tǒng)有的時候會自動創(chuàng)建url地址,它會根據(jù)當前模式進行url地址創(chuàng)建使用
快捷函數(shù) U(); ?創(chuàng)建url地址
?
thinkphp->conf->convention.php->'URL_MODEL'表示在自動生成路徑的時候是按照這種模式生成的,并不是表示訪問一定要按照這個方式訪問?
通過url地址模式我們學習到了以下內(nèi)容:
1.我們學習到了配置變量(核心配置變量conversion.php、當前應用配置變量config.php)
2.快捷函數(shù)U(“模塊/控制器/方法”) ?根據(jù)參數(shù)和url模式 創(chuàng)建對應的url地址
3.把框架的模式調(diào)整為開發(fā)調(diào)試模式
?
》默認的IndexController.class.php控制器中,控制器就是一個類,繼承Controller父類,里面的index方法在控制器里稱為操作?
》訪問入口文件的時候,實際上訪問的是 默認控制器里的默認方法 (?thinkPHP文件夾中的conf->convention.php?)
》'URL_MODEL' = 1 代表的是默認自動生成路徑的時候,按照1的路徑生成的.在自己的項目中,如果要創(chuàng)建URL的話,是按照1的路徑創(chuàng)建
【開發(fā)、生產(chǎn)模式】
開發(fā)調(diào)試模式:系統(tǒng)需要加載大概24個文件 ?index.php ?define(“APP_DEBUG”,true);
生產(chǎn)模式:系統(tǒng)只需要加載很少的大概7個文件 ?在入口文件
index.php中定義: define(“APP_DEBUG”,false);
節(jié)省了許多文件的開發(fā)、關(guān)閉的系統(tǒng)開銷,節(jié)省資源
如果把入口文件index.php中的開發(fā)模式改成生產(chǎn)模式,再訪問一遍入口文件index.php 在Shop(項目文件夾)里的Runtime文件夾里會緩存出一個common-runtime.php文件夾,集成了很多文件。如果是生產(chǎn)模式,直接使用這個文件就可以的
要在頁面顯示trace信息,需要在自己的配置文件中:
》開發(fā)的時候建議開啟(在自己的項目配置中)
'SHOW_PAGE_TRACE'=>TRUE, 寫在配置里,右下角出現(xiàn)的標志,點擊會顯示一些執(zhí)行的詳細信息
》生產(chǎn)模式狀態(tài)下,會緩存common-runtime.php文件,在自己創(chuàng)建的Shop項目文件夾下->Runtime->common-runtime.php文件(好多文件集成在這個文件里)
【控制器和對應方法創(chuàng)建】
控制器是MVC模式中的核心,tp默認有一個Index控制器:
Index控制器里面有一個操作方法:Index
?
?
我們在訪問http://localhost:8080/Thinkphp/index.php入口文件的時候,會默認訪問Index控制器下面的Index方法
?
如果要自己創(chuàng)建一個控制器Login:
1.在\Shop\Home\Controller文件夾下新建一個控制器文件LoginController.class.php
注意:文件命名規(guī)則,按照駝峰法命名(創(chuàng)建控制器,控制器的首字母大寫?)
2.打開該文件,在里面造控制器Login類
?
3.如果要自定義操作方法,在控制器Login類里面加一個函數(shù)Login():
?
這樣我們就完成了控制器和操作方法的建立,如果要訪問我們剛才的Login控制器下的Login方法:
4.控制器中如果要調(diào)用視圖層中的模板:
這樣再次訪問,會發(fā)現(xiàn)報錯:
原因:模板文件沒有創(chuàng)建,這時候我們就要去創(chuàng)建模板文件
同一個控制器中可以有多個操作方法,而且每個方法都可以單獨訪問
?
?
》所有控制器的父類Controller 位置:TinkPHP->Library->Think->Controller.class.php?
》命名空間?(根據(jù)目錄建命名空間)
1)tp框架主要有兩個根命名空間
1.ThinkPHP\Library (在其他地方使用的根命名空間)
2.Home ?(如果是在模塊里使用的根命名空間)
2)命名空間里用的是反斜杠\
3)例:namespace Home\Controller 代表控制器的命名空間
use Think\Controller (use ThinkPHP\Library\Think\Controller) 代表引用了Think命名空間下的Controller
》同一個控制器下可以有多個方法,且每個方法都可以單獨訪問?
》控制器對應一個模板文件夾,控制器里的每一個方法,對應模板文件夾里的每一個頁面。view里的文件夾必須和控制器的名字是一致的,大小寫一致、?
》命名空間(相當于一個虛擬的文件夾)
》MVC里有一句話叫做:約定勝于配置
》顯示模板的方法在controller父類里面,里面有display方法,調(diào)用display方法后,給出模板路徑$this->display();?
》約定:模板的默認名是固定的,根據(jù)控制器名在view里建一個模板文件夾,再在文件夾里建一個和操作方法名一致的文件(.html)
轉(zhuǎn)載于:https://blog.51cto.com/zwl51168/1859699
總結(jié)
- 上一篇: Easyui主要组件用法
- 下一篇: 架构设计:生产者/消费者模式 第3页:队