ThinkPHP框架一

来源:http://www.cnblogs.com/php521/archive/2016/01/06/5104274.html
-Advertisement-
Play Games

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),這樣原來需要載入很多文件的請求現在只要載入一個文件即可。節省了很多打開、關閉的開銷。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 支付寶介面使用文檔說明 支付寶非同步通知(notify_url)與return_url.現支付寶的通知有兩類。A伺服器通知,對應的參數為notify_url,支付寶通知使用POST方式B頁面跳轉通知,對應的參數為return_url,支付寶通知使用GET方式 (通知地址不需要像以前一樣去賬戶內設置,而...
  • 在實際編程中,往往存在著這樣的“數據集”,它們的數值在程式中是穩定的,而且“數據集”中的元素是有限的。 例如星期一到星期日七個數據元素組成了一周的“數據集”,春夏秋冬四個數據元素組成了四季的“數據集”。 enum 的全稱為 enumeration, 是 JDK 1.5 中引入的新特性,存放在...
  • Demo:import java.nio.file.Path;import java.nio.file.Paths;/** * @author jinxing * @系統 MAC OS X * @用例1 [使用]絕對路徑 * @用例2 [使用]相對路徑 * @用例3 相對路徑[轉換成]絕對路徑 * ...
  • 有的小伙伴會問:博主,沒有Mac怎麼學Swift語言呢,我想學Swift,但前提得買個Mac。非也,非也。如果你想瞭解或者初步學習Swift語言的話,你可以登錄這個網站:http://swiftstub.com/。該網站可以線上運行出代碼結果,也可以說這是一個線上的Playground。你可以...
  • Path通常代表文件系統中的位置,能瀏覽任何類型的文件系統,包括zip歸檔文件系統;文件系統中的幾個概念:目錄樹、根目錄、絕對路徑、相對路徑;NIO.2中的Path是一個抽象構造,你所創建和處理的Path可以不馬上綁定到對應的物理位置上;——物理文件系統的處理通常由Files輔助類實現;基礎類類說明...
  • 當在網上問為什麼Python比C語言更慢,回答最多的就是Python中有動態類型。然而,動態類型確實會在性能方面有影響,但是這並不是主要原因。 動態類型(像Python一樣的主要編程語言都一樣)使得編譯器很難優化性能。動態使得每次執行都可能很不同,編譯器難以優化。然而,正如Alex在談話中提到的,....
  • C++中的const可用於修飾變數、函數,且在不同的地方有著不同的含義,現總結如下。const的語義C++中的const的目的是通過編譯器來保證對象的常量性,強制編譯器將所有可能違背const對象的常量性的操作都視為error。對象的常量性可以分為兩種:物理常量性(即每個bit都不可改變)和邏輯常量...
  • 一,java.util.regex包中提供了兩個類來表示對正則表達式的支持1.Matcher,通過解釋Pattern對character sequence 執行匹配操作的引擎public final class Matcher implements MatchResult2.Pattern,正則表達...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...