opencart分享鏈接,magento結(jié)構(gòu)分析
2022-10-17 11:03:09 - 米境通跨境電商
模塊(module)是Magento的核心。站點上的任何一個動作(action),無論是在前臺和還是在后臺的每一個操作都是通過模塊來實現(xiàn)的。模塊是可以視為一個容器,它可包含下面這幾項:設置(settings),數(shù)據(jù)庫模式(databaseschema),呈現(xiàn)對象(renderingobject),輔助工具類(utilityhelpers),數(shù)據(jù)模型(datamodels)或動作控制器(actioncontroller)。一個模塊可以包含全部的這六項也可以只包含其中的幾項,甚至只有一項。所有的模塊可以通過app/etc/modules/目錄中XML配置系統(tǒng)來進行開關(guān)。每個模塊也可以在自己模塊目錄下的etc子目錄中創(chuàng)建一個XML文件來保存自己的配置信息。
由于Magento中的一切都是模塊而且模塊本身又可以有自己的配置文件和數(shù)據(jù)庫設置,這樣就允許開發(fā)人員對Magento進行擴展。
模塊結(jié)構(gòu)
下面是Catalog模塊的目錄結(jié)構(gòu),它包含了模塊的所有項目(上面提到的六項):
代碼池(CodePools)
Magento中所有的模塊被放在三個代碼池中,它們分別是core,local,community。Magento本身所附帶的模塊全部放在core代碼池中。你自己開發(fā)的模塊則就安裝在local代碼池中。至于community代碼池則是用來安裝第三方模塊,但是這種想法也有可能會過時,因為模塊可以安裝在lcoal代碼池,也可以安裝在community代碼池,而并不是必須那樣劃分。
包(Package)
所有的模塊都不是直接保存代碼池目錄中,而是保存在包目錄(代碼池的子目錄)中。引入包概念的主要目的是類命名的統(tǒng)一和一貫性。所有的Magento模塊是保存在core代碼池中的Mage包中。所以,所有的Magento類名都以Mage_為前綴。而對我們自己開發(fā)的代碼我們應該在lcoal代碼池中創(chuàng)建一個包,比如以你公司的名字作為包名,這樣就可以避免類名的重復的可能性。
模型(Model)
模型可以說是Magento的肌肉。它主要是用來從數(shù)據(jù)庫提取數(shù)據(jù)到程序中。數(shù)據(jù)的輸出,呈現(xiàn)是通過塊(Block)來實現(xiàn)的。也就是說它主要是用來負責數(shù)據(jù)庫操作的。事實上在任何一個編程環(huán)境中,模型都是被用來識別處理數(shù)據(jù)域的工作,也就是說它在數(shù)據(jù)組的定義和其它相關(guān)數(shù)據(jù)組之間起到聯(lián)系的作用。
為了說明前面模型化的理論,我們舉個例子來說明一下:在創(chuàng)建一個購物車系統(tǒng)時,我們有一個Product類。每個產(chǎn)品需要一個指定一個圖片。問題是圖片如何模型化?只是簡單的給Product類一個$image_url屬性?還是創(chuàng)建一個Image_Gallery類,然后在兩個類之間創(chuàng)建一個接口,如getDefaultImage。最終的模型類取決于你決定如何實現(xiàn)數(shù)據(jù)之間的操作。