Magento 2: Untuk apa file `resources.xml`?

12

Di Magento 2, salah satu file konfigurasi XML yang mungkin dimiliki modul adalah resources.xmlfile. Misalnya, modul penjualan memiliki satu

#File: vendor/magento/module-sales/etc/resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/resources.xsd">
    <resource name="sales_setup" extends="core_setup" />
    <resource name="sales" extends="core" />
</config>

Adakah yang tahu untuk apa file-file ini digunakan di Magento 2? Mereka tampaknya menjadi <resources/>simpul tingkat atas Magento 1 tua . Namun, karena Magento penggunaan tidak lagi Penataan Sumber Daya Model / Migrasi (bukan Magento 2 menggunakan kelas dalam Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phpuntuk install / migrasi seperti script), yang tidak 100% jelas apa yang sales_setupsumber daya adalah untuk.

Untuk sumber daya non-setup, apakah ini hanya cara lain untuk menambahkan kelas koneksi database dengan informasi string koneksi / kredensial berbeda? Atau sesuatu yang lain?

Alan Storm
sumber
alan, Bisa tolong lihat file ini vendor\magento\framework\App\etc\resources.xsd"(4,41). mungkin bisa memberikan ide
Amit Bera
1
@AmitBera Itu memberi tahu bagaimana data dalam resources.xml akan muncul, tidak memberi tahu kami untuk apa sistem menggunakan file-file ini.
Alan Storm
Maaf, saya tidak punya ide yang jelas tentang hal ini. Jika saya mendapatkan poin maka saya akan memposting
Amit Bera

Jawaban:

10

Saya pikir sumber daya berkaitan dengan koneksi database yang sebenarnya. M1 di masa lalu memiliki sesuatu seperti ini:

   <resources>
        <backup_setup>
            <setup>
                <module>Mage_Backup</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </backup_setup>
        <backup_write>
            <connection>
                <use>core_write</use>
            </connection>
        </backup_write>
        <backup_read>
            <connection>
                <use>core_read</use>
            </connection>
        </backup_read>
    </resources>

jadi saya akan mengatakan file sumber daya adalah penerus dari apa koneksi itu.

Tidak yakin bahwa simpul _setup memberikan banyak nilai di atas baris lain karena kita memiliki kode ini

lib / internal / Magento / Framework / App / ResourceConnection / Config.php

public function getConnectionName($resourceName)
{
    $connectionName = \Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION;

    $resourceName = preg_replace("/_setup$/", '', $resourceName);

dan juga di setup / src / Magento / Setup / Module / Setup / ResourceConfig.php

class ResourceConfig implements \Magento\Framework\App\ResourceConnection\ConfigInterface
{
    /**
     * {@inheritdoc}
     */
    public function getConnectionName($resourceName)
    {
        return \Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION;
    }
}

Saya telah melihat sekilas beberapa modul perusahaan untuk melihat apakah hal itu memberi lebih banyak perhatian pada penggunaan resources.xmlfile (karena beberapa dbs tampaknya merupakan fitur M2 Enterprise) tetapi satu-satunya penggunaan yang saya temui sejauh ini juga hanya menggunakan extends dari core.

Firasat saya adalah bahwa seseorang perlu membuat koneksi db tambahan app/etc/env.phpyang kemudian memungkinkan Anda untuk menggunakan nilai-nilai itu untuk menimpa yang dikirimkan dalam resource.xmlfile default (yaitu hanya 1 koneksi default).

Kristof di Fooman
sumber
2
Singkatnya: 'resources.xml' memungkinkan pengembang ekstensi untuk menentukan informasi warisan sumber daya dan informasi penghubung koneksi.
Anton Kril