config.xml vs local.xml

17

Apa perbedaan antara app / etc / config.xml dan app / etc / local.xml ?

Saya merasa beberapa konfigurasi digandakan. Saya selalu harus berurusan dengan w / local.xml, jadi apa tujuan dari memiliki semua hal lain di config.xml dan kapan itu digunakan?

veilig
sumber

Jawaban:

15

config.xml dan local.xml dimuat bersama, bersama dengan file xml lain yang Anda tempatkan app/local. Mereka dimuatMage_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 akan berfungsi jika Anda memindahkan konten config.xml ke local.xml dan menghapus sepenuhnya config.xml.
Pemisahan ini ada karena suatu alasan.
config.xml berisi pengaturan (sebut saja mereka) yang tidak bergantung pada lingkungan tempat Magento diinstal.
local.xml berisi pengaturan yang tergantung lingkungan: koneksi DB, mesin cache, kunci enkripsi, pengendali sesi.
Dengan cara ini bagian dari pengaturan dapat diversi (config.xml) dan Anda hanya memiliki file kecil tergantung pada lingkungan.

Marius
sumber
4
Juga selama pemutakhiran config.xml akan ditimpa dan local.xml tidak akan. Dan akhirnya local.xml sebenarnya dimuat dua kali, pada awal dan akhir parsing konfigurasi. Karena semuanya digabungkan dalam satu objek konfigurasi, apa pun yang Anda masukkan ke local.xml akan menimpa konfigurasi lainnya dalam modul apa pun.
Petar Dzhambazov
4
@PetarDzhambazov "pada akhir konfigurasi parsing" tidak sepenuhnya benar / jelas, karena nilai-nilai dari core_config_datadiuraikan dan digabungkan setelah local.xml .
patokan