config.xml vs local.xml

17

Jaka jest różnica między app / etc / config.xml a app / etc / local.xml ?

Wydaje mi się, że niektóre konfiguracje są zduplikowane. Zawsze mam do czynienia z plikiem w / local.xml, więc jaki jest cel posiadania wszystkich innych rzeczy w config.xml i kiedy jest używany?

veilig
źródło

Odpowiedzi:

15

config.xml i local.xml są ładowane razem, wraz z każdym innym plikiem xml, w którym się umieszczasz app/local. Są załadowaneMage_Core_Model_Config::loadBase()

public function loadBase()
    {
        $etcDir = $this->getOptions()->getEtcDir();
        $files = glob($etcDir.DS.'*.xml');
        $this->loadFile(current($files));
        while ($file = next($files)) {
            $merge = clone $this->_prototype;
            $merge->loadFile($file);
            $this->extend($merge);
        }
        if (in_array($etcDir.DS.'local.xml', $files)) {
            $this->_isLocalConfigLoaded = true;
        }
        return $this;
    } 

Magento będzie działać, jeśli przeniesiesz zawartość config.xml do local.xml i usuniesz całkowicie config.xml.
Ta separacja istnieje z jakiegoś powodu.
config.xml zawiera (nazwijmy je) ustawienia, które nie zależą od środowiska, w którym zainstalowany jest Magento.
local.xml zawiera ustawienia zależne od środowiska: połączenie DB, silnik pamięci podręcznej, klucz szyfrowania, moduł obsługi sesji.
W ten sposób część ustawień może być wersjonowana (config.xml) i masz tylko mały plik w zależności od środowiska.

Marius
źródło
4
Również podczas aktualizacji config.xml zostanie nadpisany, a plik local.xml nie zostanie. I wreszcie plik local.xml jest ładowany dwukrotnie, na początku i na końcu analizy składni konfiguracji. Ponieważ wszystko jest scalone w jednym obiekcie konfiguracyjnym, wszystko, co umieścisz w pliku local.xml, zastąpi każdą inną konfigurację w dowolnym module.
Petar Dzhambazov
4
@PetarDzhambazov „na końcu parsowania konfiguracji” nie jest całkowicie poprawny / czysty, ponieważ wartości z core_config_datasą analizowane i scalane po local.xml .
zyskuje