TShopping

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

[教學] Opencart開發架構

[複製鏈接]
發表於 2014-10-15 16:49:44 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
1. Opencart的系統架構
1.1. 架構分析
Opencart是有自己的開發架構的,其架構的核心都在system\engine 下,訪問控制統一用根目錄下的index.php 來協調。
Route 就是起到一個中轉器的作用,它會根據你的Route目錄去找到它要執行的方法,比如:
index.php?route=account/login
根據這個route,op的框架會找到Controller下的Account裡的Login.php, 注意login.php的類名一定是這種格式的ControllerAccoutLogin{...}
否則Op就識別不了目錄,route=account/login 會執行類的默認方法:index
如果要指明執行那個方法,則在login後面再加上
route=account/login/你定義的方法名
並且在login.php 裡定義你要執行的方法。
同理,Op裡load 語言包和model等都是以這種機制為基礎的。請結合程序,應該是比較好理解的。
至於View層,Op都是把要顯示的數據加載到this->data裡去的,這樣就可以用$變量名在頁面上顯示變量了。
1.2. Op系統配置文件(這段是引用別人的。。。找不到出處了- - 作者看到請聯繫我)
在Op的目錄下,可以發現一個Config.php文件,這裡是配置一些OP要使用到的配置路徑,並且是每個單獨項目裡都有一個單獨的配置(這點要注意),比如admin和catalog下就分別有這個文件。
OpenCart是使用面向對象編程的,同時又使用了MVC的設計思想,因此在解讀其源代碼時是看不到過程式的代碼的。同時它把MVC框架部分單獨放在library目錄中,這個部分的內容一般是不作修改的。就像你顯式地使用其它框架編程一樣。
Engine下有一個裝配器文件:loader.php,這個文件中只有一個類:loader,實際上是一個調度程序,框架中的其它組件,如controller,module,session,cache,language統統由它裝載調度。
為了讓系統運行起來, 象所有的PHP程序一樣,OpenCart需要把系統中的一些重要的參數從config.php中,對於這個文件,按慣例,使用一句:
require('config.php');
連接數據庫的DSN參數和相關目錄設置就可用了,下面有必要將config.php文件列表在下,這有利於我們理解OpenCart的設計思想:
// HTTP
define('HTTP_SERVER', 'http://localhost/cnopencart/');
define('HTTP_IMAGE', 'http://localhost/cnopencart/image/');
// HTTPS
define('HTTPS_SERVER', '');
define('HTTPS_IMAGE', '');
// DIR
define('DIR_CACHE', 'C:\wamp\www\cnopencart/cache/');
define('DIR_DOWNLOAD', 'C:\wamp\www\cnopencart/download/');
define('DIR_IMAGE', 'C:\wamp\www\cnopencart/image/');
define('DIR_LIBRARY', 'C:\wamp\www\cnopencart/library/');
define('DIR_MODEL', 'C:\wamp\www\cnopencart\catalog/model/');
define('DIR_CONTROLLER', 'C:\wamp\www\cnopencart\catalog/controller/');
define('DIR_LANGUAGE', 'C:\wamp\www\cnopencart\catalog/language/');
define('DIR_EXTENSION', 'C:\wamp\www\cnopencart\catalog/extension/');
define('DIR_TEMPLATE', 'C:\wamp\www\cnopencart\catalog/template/');
// DB
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '111111');
define('DB_NAME', 'opencart');
?>
與別的系統可能有些不同是的,OpenCart有一個config類用來從別的設置文件或數據庫裡存取數據,這些數據也是在程序一開始運行就需要的,因此第一個由loader裝載的就是config類,裝載config類就只簡單地用了一句:
// Config
$config =$this->load->....
其它所有的對像這是以這種方法來進行管理。
2. Op的加載器
2.1. 系統加載
在System下有一些公共類,所以的基礎類和公共類都是通過index.php 去加載的,這樣你就可以去加載你需要的類和文件了。比如:
$loader = new Loader();
Registry::set('load', $loader);
然後你就可以在系統裡調用Load方法去加載需要的Model和language 文件了。調用方式如下:
$this->load->....
Op裡就是通過這個方法來註冊他所需要的資源的。


 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



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

GMT+8, 2016-12-11 14:41 , Processed in 0.055672 second(s), 22 queries .

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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