ThinkPHP框架一

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

相關文章
相關標籤/搜索