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->....
//Databases
$db = $this->load->model("資料庫類");
其它所有的對象這是以這種方法來進行管理。 2. Op的加載器 2.1. 系統加載 在System下有一些公共類,是以的基礎類和公共類都是通過index.php 去加載的,這樣你就可以去加載你需要的類和檔案了。比如: $loader = new Loader(); Registry::set('load', $loader); 然後你就可以在系統裡調用Load方法去加載需要的Model和language 檔案了。調用方式如下: $this->load->.... Op裡就是通過這個方法來注冊他所需要的資源的