第一章 Magento強大的配置系統

2021-08-25 15:01:39 字數 2738 閱讀 4754

深入理解magento – 第一章 – magento強大的配置系統

翻譯:hailong zhang

[b]第一章 – magento強大的配置系統

[/b]

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

設定外掛程式的目錄結構

大多數magento的系統模組的結構和我們將要構建的外掛程式的結構是一樣的。magento的系統模組在以下目錄

每乙個子目錄都是乙個單獨的模組。這些模組是由magento官方開發的。我們安裝完magento以後,所使用的功能就是來自這些模組。我們自己建立的模組應該放在如下目錄

「packagename」應該是乙個唯一的字串,用來標識你的**。通常人們使用公司名字作為packagename,比如

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

你的外掛程式並不一定需要包含以上所有的目錄,但是為了以後開發方便,我們還是在一開始就把目錄建立好。接下來我們要建立兩個檔案,乙個是config.xml,放在etc目錄下面

檔案內容如下

0.1.0

第二個檔案需要在如下位置建立

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

true

local

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

清空magento快取

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

展開「disable modules output」

確認「alanstormdotcom_configviewer」顯示出來了

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

[b]建立模組邏輯[/b]

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

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

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

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

4. 終止執行流程

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

...singleton

alanstormdotcom_configviewer_model_observer

checkforconfigrequest

然後建立如下檔案

輸入以下內容

<?php

class alanstormdotcom_configviewer_model_observer === 'true')

}private function setheader() ) ?

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

switch($format)

}private function outputconfig()

}?>

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

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

[b]配置檔案分析[/b]

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

configviewer_model_observer

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

[b]這個配置檔案有啥用?[/b]

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

$helper_salesrule = new mage_salesrule_helper();

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

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

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

在配置檔案中查詢標籤

在裡面查詢 標籤

在裡面查詢 標籤

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

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

第一章 Magento強大的配置系統

翻譯 hailong zhang magento的配置系統就像是magento的心臟,支撐著magento的執行。這套配置系統掌管著幾乎所有 module model class template etc 它把整個magento系統抽象出來,用乙個配置檔案來描述。這裡的 配置檔案 並不是乙個物理上存...

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輸入...