Загрузка Mage.php изнутри Symfony2


Как лучше всего загрузить Mage.php (Magento) класс в Symfony2. Я читал документацию и пробовал разные конфигурации autoloader и classloader, но единственное, что работает для меня, приведено ниже.. В идеале я хотел бы использовать "Лучшие практики", которых не делает мое нынешнее решение. Это, вероятно, потребует отказа от использования require_once и вместо этого загрузки из autoload.php или использования composer.json

/* 
 * var/www/symfony/app/console -- THIS WORKS ONLY IN THE SYMFONY CONSOLE
 */
    if($env == 'prod'){
    require_once '/var/www/production/app/Mage.php';
}else{
    require_once '/var/www/development/app/Mage.php';
}

Этот код позволяет мне выполнять задачи Magento ($product->save(), вещи типа backoffice, пакетные обновление продуктов) из среды Symfony, не нарушая основные функциональные возможности Magento и не подвергая данные риску.

Для тех, кому интересно, почему я хотел бы это сделать

Платформа Symfony проще для быстрой разработки внутренних процессов и внутренней отчетности. Функция Twig и формы Symfony хорошо подходят для создания отчетов.

Author: JustinP, 2014-04-10

2 answers

На самом деле это не ответ на ваш вопрос, но, по моему честному мнению, смешивание 2 фреймворков (или как вы хотите назвать Magento) никогда не является хорошим решением.

Используйте API Magento для выполнения задач, связанных с Magento, вызывая их из вашего приложения Symfony. Таким образом, они могут работать отдельно и не будут мешать друг другу.

 2
Author: Sander Mangel, 2014-04-10 11:57:40

Поскольку Magento очень особенный, пока нет такой вещи, как лучшая практика, но есть несколько возможных способов.

То, что вы описали, - это единственный способ, кроме того, он должен уважать еще некоторые вещи. 1. загрузите свой фреймворк (означает файл автоматической загрузки композиторов) 2. требовать magentos Mage.php 3. вызовите приложение Mage::($mageruncode, $mageruntype) с параметрами, которые вы бы использовали в index.php

Вам необходимо хорошо протестировать свой код, так как каждый класс, который пытались загрузить, может привести к сбою вашего приложения, так как magento создает исключение для не найденных классов. Это также влияет на функцию class_exists().

Тогда есть второй способ - использовать автозагрузчик композиторов для magento. в основном это означает:

"автоматическая загрузка":{ "карта классов": [ "../путь/к/magento/приложение/код", "../путь/к/magento/библиотека" ] },

Но удалить собственный загрузчик magento может быть немного сложно.

Для меня я использую первый подход в проекте silex, и он очень стабилен. Но тебе нужно следить за всем, что использует class_exists.

 3
Author: Flyingmana, 2014-04-27 17:05:43