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),這樣原來須要加載不少文件的請求如今只要加載一個文件便可。節省了不少打開、關閉的開銷。php