OpenCart 架構概覽

2021-05-27 13:52:47 字數 1349 閱讀 8464

opencart是乙個**設計精緻小巧的電子商務系統。

[written by iefreer: founder of techbrood.com]

1、mvc架構:

opencart是基於mvc正規化的。

model層負責獲取資料。和其他一些框架如cakephp相比,model的功能實現有限但簡潔,直接呼叫db類實現資料crud操作。

(cakephp的模型層支援基礎資料驗證,複雜業務邏輯由controller層處理)。

controller層負責處理請求,從model獲取資料,提交給view層模板。

view負責組織展示。

2、「registry」設計模式

在op中,registry是整個系統的資訊中樞。

registry是乙個單例(singleton),在index.php起始頁麵中,

首先作為建構函式引數傳遞給所要用到的類建立類例項,並隨之將這個類例項設定到這個「登錄檔」中,

這個登錄檔就像是乙個共享的資料匯流排一樣,把各個模組/資料串聯在一起。

3、整體流程

(1)建立registry物件

(2)註冊所有公共類

(3)建立front類物件,作為請求分發器(dispatcher)

(4)根據使用者請求(url)建立控制器物件及其動作。

在front類私有函式execute($action)中如下語句

$controller = new $class($this->registry); //建立控制器

(5)控制器載入相應的模型,如

$this->load->model('design/layout');

該語句將建立相應的model物件。

(6)控制器獲取模板,繪製(提取資料並啟用output buffer)到頁面輸出區output中

$this->render();

(7)最後response物件把輸出區的資料(頁面)echo返回給使用者

4、魔術函式(magic method)

在controller中呼叫$this->load->...時,熟悉物件導向語言的開發人員會覺得有點奇怪,因為controller基類中並沒有$load成員變數。

實際上這是由php5魔術函式來實現的。__get(), __set()函式在獲取/設定非類定義成員變數的時候,會由php自動呼叫。

那麼op中在執行$this->load->...時實際呼叫的是:

public function __get($key)

現在體會到registry『共享匯流排』的作用了吧。

CryEngine架構概覽

這裡說的架構只是從大體上初略描述,以後還會繼續更新詳細的說明從模組的分布上來看cryengine3和cryengine2沒有區別,其主要的dll從檔名就可以看出個大概 這裡最有意思的是 其中crysystem是引擎和外界互動的介面,從crysystem中可以獲取各個介面,例如 igame 遊戲框架 ...

pomelo架構概覽

pomelo之所以簡單易用 功能全面,並且具有高可擴充套件性 可伸縮性等特點,這與它的技術選型和方案設計是密不可分的。在研究大量遊戲引擎設計思路基礎上,結合以往遊戲開發的經驗,確定了pomelo框架的設計方案。node.js自身特點與遊戲伺服器的特性驚人的吻合。在node.js的官方定義中,fast...

SpringCloud整體架構概覽

目標 協調任何服務,簡化分布式系統開發。簡介構建分布式系統不應該是複雜的,springcloud對常見的分布式系統模式提供了簡單易用的程式設計模型,幫助開發者構建彈性 可靠 協調的應用程式。springcloud是在springboot的基礎上構建的,使開發者可以輕鬆入門並快速提高工作效率。spri...