1. 程式人生 > >thinkphp5 開發的那點事

thinkphp5 開發的那點事

知識點1:* 應用程式的流程圖。對於一般的框架是這樣的。*

appflowchart.png

  • index.php檔案作為前端控制器,初始化執行CodeIgniter所需的基本資源;
  • Router檢查http請求,以確定如何處理請求;
  • 如果存在快取檔案,將直接輸出到瀏覽器,不用走下面正常的系統流程;
  • 在載入應用程式控制器之前,對http請求以及任何使用者提交的資料進行安全檢查;
  • 控制器載入模型、核心類庫、輔助函式以及其他所有處理請求所需的資源
  • 最後一步,渲染檢視併發送至瀏覽器,如果開啟了快取,檢視會先被快取起來用於後續請求。
    註釋:前端控制器屬於設計模式的一種,它用來提供一個集中的請求處理機制,所有的請求都將由一個單一的處理程式處理。該程式可以做認證/授權/記錄日誌,或者跟蹤請求,然後把請求傳給相應的處理程式。

知識點2:對MVC設計模式的思考
MVC 是一種 用於將應用程式的邏輯層和表現層分離出來的軟體方法。在實踐中,由於這種分離 所以你的頁面中只包含很少的 PHP 指令碼。
* 模型:代表資料結構。通常來說,模型類將包含幫助你對資料庫進行增刪改查的方法。可以說包含了DOA層和模型層。
* 檢視:是要展現給使用者的資訊。一個檢視通常就是一個網頁,但是在CI中,一個檢視也可以是一部分頁面(例如頁頭、頁尾),它也可以是一個RSS頁面,或者其他任何型別的頁面。(表現層中的模板層)
* 控制器:是模型、檢視以及其他任何處理http請求所必須的資源的中介,並生成網頁。

知識點3:tp5開發中的錯誤與除錯、日誌


如果非同步ajax訪問tp5,不會返回trace資訊。
專案開發的時候,出現錯誤在所難免,最大的困惑在於發現問題所在,其次才是如何解決問題。因此懂得如何除錯和跟蹤問題非常之關鍵。
總的來說有:trace資訊(右下角)、錯誤頁面(能解決80%的錯誤)、斷點除錯(dump,halt,trace控制檯輸出)、日誌分析

學習框架需要掌握的一些概念
* LAMP是基於Linux、Apache、Mysql和php的開放資源網路開發平臺,也就是web平臺,其中的php有時候用Perl或Python去替換。Linux是開發系統,Apache是最通用的網路伺服器,mysql是帶有網路管理附加工具的關係型資料庫,php是流行的物件指令碼語言。php包含了多數其他語言的優秀特性來使得它的網路開發更加有效。
我喜歡使用WAMPServer作為win7下的整合環境。
* OOP,面向物件程式設計

是一種計算機程式設計架構,OOP的一條基本原則是計算機程式是由單個能夠起到子程式作用的單元或物件組合而成。OOP達到了軟體工程的三個主要目標:重用性、靈活性和擴充套件性。
為了實現整體運算,每個物件都能夠接收資訊、處理資料和向其他物件傳送資訊。OOP主要有以下的概念和元件:
* 元件:資料和功能一起在執行著的計算機程式中形成的單元,也就是多個物件組合在一起,向外提供相同功能的組合體。元件在OOP計算機程式中是模組和結構化的基礎。
* 抽象性:對資訊主要方面關注的能力。
* 封裝、繼承和多型,這三種特性在書本上已經講的不厭其煩了。[壞笑]
* ORM:(object/relation mapping)物件-關係對映,是隨著面向物件的軟體開發方法發展而產生的。==面向物件的開發方法是當今企業級應用開發環境中的主流開發方法,關係資料庫是企業級環境中永久存放資料的主流資料儲存系統。物件和關係資料是也為檢視的兩種表現形式,業務在記憶體中表現為物件,在資料庫中表現為關係資料庫。記憶體中的物件之間存在關聯和繼承關係,而在資料庫中,關係資料無法直接表達多對多關聯和繼承關係==,也就是程式碼中的物件和資料庫中的資料之間,需要一個轉化的橋樑,這個橋樑就是ORM。
* CURD:它代表了對資料的基本原子操作:增、刪、改、查。

  • ActivRecord:可以簡單理解為ORM層的一種實現方式,它遵循標準的ORM模型:表對映為記錄,記錄對映到物件,欄位對映到物件的屬性。它能夠很大程度的快速實現模型的操作,而且簡單易懂。

    ActiveRecord的主要思想是:

    • 每個資料庫表對應建立一個類,類的每一個物件例項對應於資料庫中表的一行記錄,通常表的每個欄位在類中都有對應的field(屬性)
    • ActiveRecord同時負責把自己持久化,在ActiveRecord中封裝了對資料庫的訪問,即CURD
    • ActiveRecord是一種領域模型(Domain Model),封裝了部分業務邏輯

    ActiveRecord比較適用於:

    • 業務邏輯比較簡單,當你的類基本上和資料庫中的表一一對應時,ActiveRecord是非常方便的,即你的業務邏輯大多數是對錶單操作
    • 當發生跨表的操作時,往往會配合使用事務指令碼,把跨表事務提升到事務指令碼中
    • ActiveRecord最大優點是簡單、直觀。一個類包括資料訪問和業務邏輯。如果配合程式碼生成器使用就更方便了。這些優點是ActiveRecord特別適合WEB快速開發。
  • CBD架構模式
    核心+行為+驅動

    • 核心(Core):就是框架的核心程式碼,不可缺少的東西,thinkphp這個框架就是基於MVC的開發框架。
    • 行為(Bahevior):行為在thinkphp架構中起到了去足輕重的作用,在系統核心之上,設定了很多標籤擴充套件位,而每個標籤位置可以依次執行各自的獨立行為。行為擴充套件就此誕生,而且很多系統功能也是通過內建的行為擴充套件完成的,所有的行為擴充套件都是可替換和增加的,由此形成了底層框架的可組裝的基礎。
    • 驅動(Driver):資料庫驅動、快取驅動、標籤庫驅動和模板引擎驅動,以及外接的類擴充套件。
  • 單一入口
    通常是指一個專案或者應用具有一個統一(但並不一定是唯一)的入口檔案,也就是一個專案的所有功能操作都是通過這個入口檔案進行的,並且入口檔案是執行的第一步。
    單一入口的好處是控制比較靈活,因為攔截方便,類是如一些許可權控制、使用者登入方面的判斷和操作可以統一處理了。

    歡迎轉載!!!

相關推薦

Hybrid App 和 React Native 開發

簡介:Hybrid App(混合模式移動應用)開發是指介於Web-app、Native-App這兩者之間的一種開發模式,兼具「Native App 良好使用者互動體驗的優勢」和「Web App 跨平臺開發的優勢」。很多人都知道,React Native 是 Fa

thinkphp5 開發

知識點1:* 應用程式的流程圖。對於一般的框架是這樣的。* index.php檔案作為前端控制器,初始化執行CodeIgniter所需的基本資源; Router檢查http請求,以確定如何處理請求; 如果存在快取檔案,將直接輸出到瀏覽器,不用走下面正常的

Linux USB 驅動開發(四)—— 熱插拔

Linux USB 驅動開發(四)—— 熱插拔那點事         學習USB熱插拔之前,先學習一些USB的硬體知識: 一、USB基礎概念 1、硬體知識(USB插座和插頭)        在最初的標

Android開發之影象處理——濾鏡

code小生,一個專注 Android 領域的技術平臺公眾號回覆 Android 加入我的安卓技

iOS開發中ARC的

        在MRC時代,Block會隱式地對進入其作用域內的物件(或者說被Block捕獲的指標指向的物件)加retain,來確保Block使用到該物件時,能夠正確的訪問。 這件事情在下面程式碼展示的情況中要更加額外小心。 MyViewController *myController = [[MyV

基於VUE開發專案的(一)

前言 最近由於公司需要,需要寫一個相對來說比較大型的後臺管理系統。為了保證管理系統操作體驗較為舒適並且專案後期益於維護,最後決定基於VUE全家桶來開發一個高度元件化的單頁SPA應用。 技術選型 vue:進行資料繫結以及開發元件 vue-rou

前端開發-------------ie絕對是個神坑,360瀏覽器的相容模式依然是個神坑

最近做公司的pc官網。發現ie上個有個bug 是個神坑,在其他的谷歌,火狐上都是可以的就是ie11不行,還是高版本的ie呢 我用的是input框的input事件,在頁面初始化載入介面,展示資料的時候,會走input中的input事件,奇葩了,在其他的主流瀏覽器上就不會出現,

Egret開發《消滅方塊》後記(三)選事件

        追求好的效能就要對程式碼很苛刻,效率都是一點一點擠出來的,蚊子肉也是肉,但是這一點點的積累就會帶來一個很流暢的遊戲。本篇說的是關於點選事件的優化,對效率的提升可能不是那麼明顯,只是為你提供一種用更高效的方式解決問題的思路,希望能對你有所啟發。 怎麼來減少

開發和運維

引用值 xxx war spa 領導 開發 maven打包 include 打包 今天運維和開發就環境切換問題展開了一次小小的爭論maven打包之前配置文件是這樣的: <context:property-placeholder location="clas

設計模式--策略模式

簡化 cas enter ext font 想要 fonts 對象創建 客戶 概念: 策略模式定義了一系列的算法,分別封裝起來,讓它們之間能夠相互替換。此模式讓算法的變化,不會影響到使用算法的客戶。策略,實質上指的是算法。 樣例

談談字符串

沒有 register 用戶 今後 過程 破解 插件 運行 tro 在od破解軟件過程中,大家對於字符串應該是再熟悉不過了,但是往往事情不盡如人意,總是搜索不到想要的字符串,這時往往有的人會被迫用別的方法,消息斷點,內存斷點,硬件斷點等等,今天咱們只談字符串,把我所掌握的查

浮點數的

bsp 用兩個 處理 有一個 奇葩 加減乘 而且 出了 判斷 浮點數是計算機中儲存實數的形式。我們時常需要用浮點數去處理帶小數點的運算。可你是否知道,浮點數還有這些操作: 正負無窮大 與整數不同,浮點數沒有溢出的概念。當浮點數的運算結果超過一定範圍時,它的值就會根據運算結

新手···男生

for take edit ger har ping minutes lazy sgu 1、alarm clock go off鬧鐘響了,sleep right through it睡過去了,time to get up該起床, 2、you name it你說的 3、sle

mongodb第二篇文章~關於集群認證的

所有 目的 create 介紹 副本 這就是我 port pwd root 集群認證簡介:上一篇咱們介紹了單實力的認證方式,正好我在搞lepus監控,副本集合需要用戶認證 一 驗證方式: 1 auth 方式啟動=》單點 2 keyFile 方式啟動=》集群 請註意 開

PostgreSql(文件讀取寫入、命令執行的辦法)

ict con ext ews none urn truct 語法 tip ? 2013/07/9 作者: admin PostgreSql那點事(文件讀取寫入、命令執行的辦法) 今天無意發現了個PostgreSQL環境,線上學習了下,一般的數據註射(讀寫數據庫)差異不

搭建Maven私服

文件的 repos 版本控制工具 oracl 手工 apach security 項目 源碼 摘要:本文主要介紹在CentOS7.1下使用nexus3.6.0搭建maven私服,以及maven私服的使用(將自己的Maven項目指定到私服地址、將第三方項目jar上傳到私服供

this的

this指向 st2 開始 light pre 全局對象 很多 var 同時 對於很多初學者,this總是搞得我們暈頭轉向。 現在,我就簡單的總結一下關於this的那點事。 this在函數定義時經常是不能確定的,只有在函數執行的時候才能最終確定this的歸屬。this總是指

net 自定義泛型

toolbar user 定義和使用 程序 參考 關鍵字 double png 不同 泛型概述 泛型是程序設計語言的一種特性。允許程序員在強類型程序設計語言中編寫代碼時定義一些可變部分,那些部分在使用前必須作出指明。各種程序設計語言和其編譯器、運行環境對泛型的支持均不一樣

C#編譯器優化

代碼質量 配置 需要 但是 strong -a tool -- dbo 使用C#編寫程序,給最終用戶的程序,是需要使用release配置的,而release配置和debug配置,有一個關鍵區別,就是release的編譯器優化默認是啟用的。 優化代碼開關即optimize開關

Android8.0適配(一)

懸浮 新增功能 nta onstop config ges 保持 com dfa 1、通知渠道(Channeld) 當然,適配8.0的第一步自然是把targeSdk升級到26,在8.0中所有通知的實現都需要提供通知渠道,否則,所有通知在8.0系統上面都不能正常顯示; 下圖是