1.1 框架的概念框架其實就是可重用代碼的集合,框架的代碼是框架架構的代碼,不是業務邏輯代碼,框架代碼保護類.方法.函數等等,框架代碼按照一定的規則組合起來就形成了框架。1.2 不使用框架開發的時候遇到的問題 1.代碼編寫沒有統一的規範 2.項目功能不能很好的拆分 3.一個局部的微小改動可能會...
1.1 框架的概念
框架其實就是可重用代碼的集合,框架的代碼是框架架構的代碼,不是業務邏輯代碼,框架代碼保護類.方法.函數等等,框架代碼按照一定的規則組合起來就形成了框架。
1.2 不使用框架開發的時候遇到的問題
1.代碼編寫沒有統一的規範
2.項目功能不能很好的拆分
3.一個局部的微小改動可能會影響全局
4.項目的升級比較麻煩
1.3 使用框架的好處
1.有利於團隊統一的代碼風格
2.將精力全部集中到業務邏輯上,無需關心底層框架
3.快速.穩定高效的搭建程式
4.節省大量代碼
5.後期維護升級很方便
1.5 相關的框架
1. zendframwork: 有zend官方發佈(zend 公司是維護升級PHP語言的公司),功能非常的強大,是一個重量級的框架
2.Yii:由國人開發的重量級的框架,這個框架把代碼的可重用性發揮到極致
3.cakePHP:國外的框架,速度慢
4.symfony:國外的框架
5.CI:(code Igniter),輕量級框架,運行速度快
6.ThinkPHP框架,免費的,開源的,快速,簡單面向對象(裡面的代碼既有面向對象,也有面向過程),原名FCS,2007年元旦更名為ThinkPHP
1.6 ThinkPHP文件結構
從http://www.thinkphp.cn/官方網站上下載TP框架,下載完成後進行解壓,第一類目錄里 的ThinkPHP即是我們框架的核心代碼,類似於Framework文件夾
Conf:配置文件夾,供建立在此TP框架的所有項目使用
Library:類庫
1.7.1 ThinkPHP下的Library文件夾
Behavior:框架運行時侯輔助的類
Think:ThinkPHP核心的代碼
Vendor:第三方的一些插件
1.7.2 ThinkPHPLibrary下的Think文件夾
需要註意的幾個文件:
Controller.class.php:基礎控制器
Model.class.php:基礎模型
Think.class.php:每次請求都要執行帶文件
View.class.php:基礎視圖
1.8 搭建框架的結構
在站點下新建一個index.php(入口文件),在index.php中輸入:
define('APP_PATH','./application/'); //定義項目文件夾,需要以/結尾
require './ThinkPHP/ThinkPHP.php'; //包含ThinkPHP.php文件
註意:在TP框架中可以支持多個入口文件,(也就是說支持多個項目);
1.8.1 define('APP_PATH','./application/')
定義項目文件夾,第一次執行該頁面的時候,如果沒有application文件夾,會自動創建application文件夾。當執行ThinkPHP.php文件時,第一次會自動搭建ThinkPHP框架結構。
1.9 創建控制器
控制器是一個類文件,規範如下:
1.存放在模塊(平臺)文件夾下的Controller文件夾
2.類名:控制器+Controller,用帕斯卡命名法
3.類名和文件名同名
4.文件名以 .class.php結尾
5.ThinkPHP預設使用UTF-8編碼
6.儘量區分大小寫,Windows中沒有問題的,但是Linux中會區分大小寫
註意創建控制器的時候命名空間和引入基礎控制器。
1.10 ThinkPHP的4中路由
要精確到定位到方法上,需要3個參數:平臺.控制器.方法,這三個參數。
a)普通模式:
語法:http://網址/index.php/m=模塊&c=控制器&a=方法
b)pathinofo()模式:
語法:http://網址/index.php/模塊/控制器/方法
c) 相容模式:
語法:http://網址/index.php?s=/模塊/控制器/方法
d) rewrite 重寫模式:
URL自定義功能通過重寫路由可以使得URL便簡介還可以隱藏真實的路徑。
偽靜態技術就是重寫模式。
需要用到的配置項:
'URL_ROUTER_ON' => true, //開啟路由
'URL_ROUTE_RULES' => array(
'test' => 'home/Goods/test',
), //路由規則
重定向傳遞參數
1.11 定義.調用模板
1.11.1 規則
TP框架調用模板非常簡單,功能也很強大。它有自身的一些規則
1.模板都放在view目錄中
2.一個控制器對應一個文件夾,一個方法對應一個頁面
1.11.2 調用模板
$this->display();
1.11.3 在控制器中給變數賦值
$this->assign('name','tom') //第一種方法
$this->sex='男'; //第二種方法
1.11.4 在模板中取值
{$name}
1.12 項目分組
一個項目至少分成兩組,一個前臺,一個後臺,每組都有自己的MVC。當TP框架自動生成項 目架構的時候會自動生成一個前臺的分組。
在和Home同級的目錄中新建Admin文件夾(後臺文件夾),在文件夾中新建自己的MVC
1.13 系統常量
__SELF__ : 當前請求的地址
__MODEL__ :當前模塊
__CONTROLLER__ :當前控制器
__ACTION__ : 當前方法
get_defined_constants(true)顯示所有的常量,true表示分組顯示。
問題:__CONTROLLER__常量是PHP的常量,我們發現直接將此常量寫在模板中一樣可以解析,請問為什麼PHP常量可以在HTML模板中輸出?在PHP定義一個常量NAME,如何在模板中輸出NAME的值?
在ContentReplaceBehavior.class.php 文件templateContentReplace()方法中添加一個字元串替換
1.14 在頁面的底部顯示日誌信息
'SHOW_PAGE_TRACE' => true //在頁面的底部顯示日誌信息
配置後會在頁面右下角出現一個綠色的小圖標
1.15 TP生產和開發模式
define('APP_DEBUG', TRUE); //開發模式
define('APP_DEBUG', false); //生產模式
1.15.1 開發模式
1.錯誤提示比較友好
2.代碼的修改會立即顯示效果
3.執行效率低
1.16.2 生成模式
1.錯誤提示比較模糊
2.會把很多核心代碼文件製作成一個緩存文件(common~runtime.php),這樣原來需要載入很多文件的請求現在只要載入一個文件即可。節省了很多打開、關閉的開銷。