第一章 Magento強大的配置系統

2021-06-20 14:08:54 字數 4182 閱讀 2794

翻譯:hailong zhang

magento的配置系統就像是magento的心臟,支撐著magento的執行。這套配置系統掌管著幾乎所有「module/model /class/template/etc」。它把整個magento系統抽象出來,用乙個配置檔案來描述。這裡的「配置檔案」並不是乙個物理上存在的文 件,而是magento根據當前的系統狀態動態生成的一段xml。大多數的php開發者並不習慣於這樣抽象層,因為它增加的程式設計的複雜性。但是這樣的抽象 提供了無與倫比的靈活性,允許你覆蓋幾乎任何系統的預設行為。

首先,讓我們寫乙個簡單的外掛程式來看看這個所謂的「配置檔案」長什麼樣。雖然我已經提供的現成的** ,但是還是建議你自己建立這個外掛程式,把整個流程走一遍有助於你的理解。

設定外掛程式的目錄結構

我們將要建立乙個magento的模組【譯者注: magento的外掛程式不叫plug-in,叫module,翻譯成模組】。magento的模組由php和xml檔案組成,目的是擴充套件或者覆蓋系統的行 為,比如為訂單增加資料模型,更改乙個類的方法,或者增加乙個全新的功能。【譯者注:magento自帶的那些功能也都是基於模組的,比如使用者註冊,商品 展示,結賬流程等等。magento給我的感覺就是一切皆模組,和eclipse的外掛程式體系結構有點像】

由於我在做我自己的magento專案,我將使用我自己的網域名稱「alanstormdotcom」。 然後,我們要建立以下目錄結構

檔案內容如下

xml**  

<

config

>

<

modules

>

<

alanstormdotcom_configviewer

>

<

version

>0.1.0

version

>

alanstormdotcom_configviewer

>

modules

>

config

>

第二個檔案應該遵循如下命名規則「packagename_modulename.xml」,檔案內容如下

xml**  

<

config

>

<

modules

>

<

alanstormdotcom_configviewer

>

<

active

>true

active

>

<

codepool

>local

codepool

>

alanstormdotcom_configviewer

>

modules

>

config

>

我們先不管這些檔案是幹什麼的,以後會解釋。建立好這兩個檔案以後,你的模組的骨架就已經完成了。magento已經知道你的模組存在,但是現在你的模組不會做任何事情。我們來確認一下magento確實裝載了你的模組

清空magento快取

在後台管理介面,進入 system->configuration->advanced

展開「disable modules output」

確認「alanstormdotcom_configviewer」顯示出來了

如果你看到「alanstormdotcom_configviewer」,那麼恭喜你,你已經成功建立了你第乙個magento模組!

建立模組邏輯

我們之前建立的模組不會做任何事情,下面我們來為這個模組加入邏輯

1. 檢查「showconfig」查詢字串是否存在

2. 如果「showconfig」存在,那麼檢查「showconfigformat」查詢字串是否存在

3. 如果「showconfigformat」存在,那麼輸出指定格式的配置資訊,否則輸出預設格式的配置資訊

4. 終止執行流程

首先更改我們的config.xml檔案

xml**  

<

config

>

<

modules

>...

modules

>

<

global

>

<

events

>

<

controller_front_init_routers

>

<

observers

>

<

alanstormdotcom_configviewer_model_observer

>

<

type

>singleton

type

>

<

class

>alanstormdotcom_configviewer_model_observer

class

>

<

method

>checkforconfigrequest

method

>

alanstormdotcom_configviewer_model_observer

>

observers

>

controller_front_init_routers

>

events

>

global

>

config

>

然後建立如下檔案alanstormdotcom/configviewer/model/observer.php輸入以下內容

xml**  

phpclass alanstormdotcom_configviewer_model_observer  === 'true')  

}  private function setheader() ) ?  

$this->request-> : 'xml';                                 

switch($format)            

}  private function outputconfig()   

}  ?>

好了,**編輯結束。清空你的magento快取,輸入如下url

【譯者注: 根據文中的配置,不難看出任何指向magento的url加了「?showconfig=true」以後,都會輸出同樣的內容,正常的執行流程會被終止。】

配置檔案分析

開啟上述url,你應該看到乙個巨大的xml檔案。這個檔案描述了當前magento系統的狀態。它列出了所有的模組,資料模型,類,事件,***等等。舉個例子,如果你搜尋如下字串

configviewer_model_observer

你會發現剛剛你建立的那個類被列出來了。magento會解析每個模組的config.xml,並把它們包含在這個全域性配置中。

這個配置檔案有啥用?

到目前為止,我們所作的事情似乎沒什麼意義,但是這個配置檔案卻是理解magento的關鍵因素。你建立的每乙個模組都會被加到這個配置檔案中,任 何時候,你需要呼叫乙個系統功能的時候,magento都會通過這個配置檔案來查詢相應的模組和功能。舉個簡單的例子,如果你懂mvc的話,你應該和 「helper class」之類概念的打過交道

php**  

$helper_salesrule = new mage_salesrule_helper();  

magento抽象了php的類宣告方式。在magento系統中,上面的**等同於

php**  

$helper_salesrule = mage::helper('salesrule');  

magento將通過以下邏輯來處理這行**

在配置檔案中查詢標籤

在裡面查詢 標籤

在裡面查詢 標籤

例項化從#3找到的類(mage_salesrule_helper)

magento總是通過配置檔案來獲得類名,這個邏輯看起來有些複雜,但這樣做的優點也很明顯,我們可以不需要更改magento的**就能更改 magento的核心功能。【譯者注: 在這個例子中,我們可以通過修改配置檔案用我們自己的salesrule_helper類來替換原來那個】這種高度抽象的程式設計方式在php中並不常見,但 是它可以讓你清晰的擴充套件或者替換系統的某一部分。

第一章 Magento強大的配置系統

深入理解magento 第一章 magento強大的配置系統 翻譯 hailong zhang b 第一章 magento強大的配置系統 b 首先,讓我們寫乙個簡單的外掛程式來看看這個所謂的 配置檔案 長什麼樣。雖然我已經提供的現成的 但是還是建議你自己建立這個外掛程式,把整個流程走一遍有助於你的理...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...

第一章 Linux環境配置

1.修改主機名 vi etc sysconfig network 注意 按,進入編輯模式。按,再輸入 wq 退出儲存 2.修改ip 1 先找到虛擬機器上的閘道器ip 2 輸入命令 vi etc sysconfig network scripts ifcfg eth0 新增紅框部分,gateway輸入...