程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ThinkPHP3.0認識

ThinkPHP3.0認識

編輯:關於PHP編程

看到ThinkPHP3.0新出的版本,很興奮,因為它提出了很多新概念,如CBD模式,AOP編程思想。著重對這兩個新概念做個總結。
 
CBD認識
 
引用官方手冊:ThinkPHP3.0版本引入了全新的CBD(核心Core+行為Behavior+驅動Driver)架構模式,因為從底層開始,框架就采用核心+行為+驅動的架構體系,核心保留了最關鍵的部分,並在重要位置設置了標簽用以標記,其他功能都采用行為擴展和驅動的方式組合,開發人員可以根據自己的需要,對某個標簽位置進行行為擴展或者替換,就可以方便的定制框架底層,也可以在應用層添加自己的標簽位置和添加應用行。而標簽位置類似於AOP概念中的“切面”,行為都是圍繞這個“切面”來進行編程,如果把系統內置的核心擴展看成是一種標准模式的話,那麼用戶可以把這一切的行為定制打包成一個新的模式,所以在ThinkPHP裡面,稱之為模式擴展,事實上,模式擴展不僅僅可以替換和增加行為,還可以對底層的MVC進行替換和修改,以達到量身定制的目的。利用這一新的特性,開發人員可以方便地通過模式擴展為自己量身定制一套屬於自己或者企業的開發框架,新版的模式擴展是框架擴展的集大成者,開創了新的裡程碑,這正是新版的真正魅力所在。
 
AOP認識
 
引用官方手冊:
 
AOP(Aspect-Oriented Programming,面向方面編程),可以說是OOP(Object-Oriented Programing,面向對象編程)的補充和完善。OOP引入封裝、繼承和多態性等概念來建立一種對象層次結構,用以模擬公共行為的一個集合。當我們需要為分散的對象引入公共行為的時候,OOP則顯得無能為力。也就是說,OOP允許你定義從上到下的關系,但並不適合定義從左到右的關系。例如日志功能。日志代碼往往水平地散布在所有對象層次中,而與它所散布到的對象的核心功能毫無關系。對於其他類型的代碼,如安全性、異常處理和透明的持續性也是如此。這種散布在各處的無關的代碼被稱為橫切(cross-cutting)代碼,在OOP設計中,它導致了大量代碼的重復,而不利於各個模塊的重用。而AOP技術則恰恰相反,它利用一種稱為“橫切”的技術,剖解開封裝的對象內部,並將那些影響了多個類的公共行為封裝到一個可重用模塊,並將其名為“Aspect”,即方面。所謂“方面”,簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重復代碼,降低模塊間的耦合度,並有利於未來的可操作性和可維護性。AOP代表的是一個橫向的關系,如果說“對象”是一個空心的圓柱體,其中封裝的是對象的屬性和行為;那麼面向方面編程的方法,就仿佛一把利刃,將這些空心圓柱體剖開,以獲得其內部的消息。而剖開的切面,也就是所謂的“方面”了。然後它又以巧奪天功的妙手將這些剖開的切面復原,不留痕跡。
 
使用“橫切”技術,AOP把軟件系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關系不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處都基本相似。比如權限認證、日志、事務處理。Aop 的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。正如Avanade公司的高級方案構架師Adam Magee所說,AOP的核心思想就是“將應用程序中的商業邏輯同對其提供支持的通用服務進行分離。”
 
 
 
個人認識:AOP是編程思想,就是把整個項目的一些需要重復使用的功能模塊做成一個一個切面,這樣我們在這個項目裡就不會重復編寫代碼。而CBD是AOP思想的實現方式,把一些需要多出用到的功能(即所謂的切面)寫成一個一個Behavior,這樣我們只要使用這個行為就好了,這個行為就只有一個方法可以供調用那就是run,其他Behavior類的行為都為private屬性。並且,這種調用方式被封裝成B($name, &$param)這個方法,我們調用切面行為時,只要執行B方法就可以了。(這種形式,很符合依賴注入思想,這樣的好處就是實現代碼的解耦合)。
 
那麼,如果使用ThinkPHP2.X怎麼在不換框架的前提下,可以更好的用上這些好的編程思想呢。在做項目前,首先要先對項目進行 統籌規劃,比如說對一些會重復出現的行為,如對數據進行項目級特殊驗證,可以把它做成一個切面(Behavior),這樣我們只要重復使用這個切面。
 
大概讀了ThinkPHP3.0,個人覺得,3.0和2.X沒多大區別,但是3.0更強調我們在做項目前統籌規劃,利用AOP思想避免重復代碼。好好汲取其中的養分用到自己平時的編程中去
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved