TShopping

 找回密碼
 註冊
搜索
查看: 1724|回復: 0

[分享] OpenCart 程序結構與業務邏輯

[複製鏈接]
發表於 2014-12-31 14:42:31 | 顯示全部樓層 |閱讀模式
 
Push to Facebook

OpenCart 是一套比較簡單的MVC架構的php開源電子商務程序,完全沒有Magento系統那麼複雜。當然簡單的代價是相應的功能和安全性能上的不足。不過OpenCart 系統中的一些經典設計還是很值得學習的。

OpenCart 首先將前台和後台完全分離開來,後台文件結構在admin/目錄下;而前台在catalog/目錄,入口文件index.php 在根目錄下。各自都有一個可以做不同設置的配置文件config.php,在這裡設置一些目錄路徑常量、數據庫信息等。下面以OpenCart前台為例看看文件結構和MVC模式:

Catalog 前台

|

index.php 入口文件

|| 載入配置文件config.php
|| 檢測是否新安裝,是則跳轉到install/index.php
||載入啟動類(/system/startup.php)(程序引擎system/engine  /核心類system/library / helper類system/helper)
|| 載入應用程序模塊類(自動預加載的常用模塊類,如customer 和tax 等)
|

啟動引擎Engine

|| 引入engine/registry.php 實例化下面的類並設置
|| 實例化加載器engine/loader.php,配置類library/config.php,數據庫library/db.php 以及library/url.php
|| 獲取商店Store和商店設置Settings,定義錯誤類
|

處理請求request/response

|| 實例化library/request.php,library/response.php,library/cache.php, library/sesshion.php
|| 語言檢測,設置語言類library/language.php
|| 其他常用預加載模塊類的實例化和引入,如library/document.php,customer,tax等
|

前台控制器/engine/front.php

|| addPreAction1: dispatch之前判斷是否處於Maintenance Mode
|| addPreAction2: dispatch之前執行SEO url設置catalog/controller/common/seo_url.php
|| request獲取route變量傳遞給Action,然後由前台控制器的dispatch方法處理該Action。
然後Dispatch 開始引入MVC 架構,整個過程由Controller 貫穿:

Dispatch

|| Dispatch 請求的Action

Pre_Action

|| 預處理action 作為子Action

Action

|| 繼承自基礎控制器類/engine/controller.php的類方法

默認index()方法

|| 通過Load Model(engine/loader.php)和相應的Model通信如catalog/model/catalog/category.php)

Model

|| Model:類方法執行sql語句,從數據庫(library/db.php)中查詢​​或操作數據,沒有引入pdo等數據庫抽像類

Controller:返回結果保存到$this->data[]數組

|| Controller 處理業務邏輯

View:$this->template 指定模板

|| View 負責內容呈現方式和样式。

Controller:$this->render接受$this->data[] 和$this->template

|| 傳遞回response

Controller:$this-response->setOutput()

|| 最後由response 輸出

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-3-29 14:25 , Processed in 0.150071 second(s), 23 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表