Magento 2: Для чего используются файлы `resources.xml`?

12

В Magento 2 одним из файлов конфигурации XML, который может иметь модуль, является resources.xmlфайл. Например, модуль продаж имеет один

#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>

Кто-нибудь знает, для чего эти файлы используются в Magento 2? Похоже, это старый <resources/>узел верхнего уровня Magento 1 . Однако, так как Magento больше не использует настройки ресурсов Model / Миграции (вместо Magento 2 использует классы Setup/InstallSchema.php, Setup/InstallData.php, Setup/UpgradeSchema.php, Setup/UpgradeData.phpдля установки / переноса подобных скриптов), его не 100% ясно , что sales_setupресурс для.

Для неустановочного ресурса это просто еще один способ добавить класс соединения с базой данных с другой информацией о полномочиях / строке соединения? Или что-то другое?

Алан Сторм
источник
алан, можешь пожалуйста посмотреть на этот файл vendor\magento\framework\App\etc\resources.xsd"(4,41). может быть, можно дать любую идею
Амит Бера
1
@AmitBera Это говорит о том, как должны выглядеть данные в resources.xml, но не говорит нам, для чего система использует эти файлы.
Алан Сторм
Извините, у меня не было четкого представления об этом. Если я получу хоть какое-то мнение, то я опубликую
Амит Бера

Ответы:

10

Я думаю, что ресурсы связаны с фактическим подключением к базе данных. М1 в прошлом было примерно так:

   <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>

так что я бы сказал, что файл ресурсов является преемником того, что соединение было.

Не уверен, что узел _setup обеспечивает большую ценность над другой строкой, так как у нас есть этот код в

Библиотека / внутренний / Magento / Framework / App / ResourceConnection / config.php

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

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

а также в файле 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;
    }
}

Я быстро просмотрел некоторые корпоративные модули, чтобы выяснить, проливает ли это больше света на использование resources.xmlфайла (так как несколько дБ, по-видимому, является функцией M2 Enterprise), но единственное использование, с которым я сталкивался до сих пор, также использует только расширения от core.

Я догадываюсь, что нужно будет создать дополнительные соединения БД, в app/etc/env.phpкоторых затем можно будет использовать эти значения для переопределения значений, поставляемых в resource.xmlфайлах по умолчанию (т. Е. Только 1 соединение по умолчанию).

Кристоф в Фуман
источник
2
Подводя итог: «resources.xml» позволяет разработчику расширения указывать информацию о наследовании ресурсов и информацию о связях соединений.
Антон Криль