Как часто бывает в Magento, конфигурация используется.Вот стек вызовов:
- Mage_Core_Model_Resource_Setup :: getTable ('catalog / product')
- Mage_Core_Model_Resource :: getTableName ('catalog / product');
Когда в аргументе, переданном методу core/resource
класса getTableName
, присутствует символ '/', проверяется DOM конфигурации.Сначала метод разрешит узел resourceModel со следующей строкой:
$resourceModel = (string) Mage::getConfig()->getNode()->global->models->{$model}->resourceModel;
Затем класс core/resource
вызывает свой метод getEntity()
с узлом resourceModel, передаваемым в качестве аргумента.Этот метод просто ищет в узле разрешенной (ресурсной) модели объявление сущности (т. Е. Имя таблицы):
Mage::getConfig()->getNode()->global->models->{$model}->entities->{$entity};
В случае каталога / продукта вышеприведенное сопоставление:
Mage::getConfig()->getNode()->global->models->catalog_resource->entities->product;
Если вы посмотрите XML-файл конфигурации Mage_Catalog, вы увидите, что это подтвердилось.Причина, по которой лучше всего получить доступ к имени таблицы через конфигурацию, заключается в том, что можно указать префикс таблицы, и этот метод вернет правильное имя.