Symfony 2 - обрабатывает запрос ядра (из другого приложения) внутри службы

Во-первых, я хотел бы сказать, что я нахожу Symfony2 удивительной платформой, поэтому я создаю API-интерфейс RESTful с помощью FOSRestBundle и т. Д. Но я не стремлюсь поддерживать только одно приложение symfony2 с помощью API, мне нужно несколько других приложений Symfony2 для взаимодействовать с API. Я действительно мог бы сделать это с использованием cURL и просто делать простые HTTP-запросы к API, но, поскольку API всегда находится на том же сервере, что и все другие проекты, я хотел бы обрабатывать запросы API напрямую через его ядро (так что нет Curl). Это происходит с удивительным увеличением скорости и меньшим использованием ресурсов.

Итак, чтобы это произошло, я сначала подумал о том, чтобы просто запросить AppKernel из его места назначения, вот так:

require_once '/path/to/external/AppKernel.php';

Затем я бы создал экземпляр AppKernel и обработал «подзапрос» здесь. Но затем я сразу же получил ошибки, говоря, что некоторые пакеты не могут быть загружены и т. Д., Что логично, потому что мне нужен только файл AppKernel, а не его зависимости. Поэтому я включил автозагрузчик проекта API (/app/autoload.php), но это не решило проблемы, я получил ошибки, связанные с переопределенными классами / функциями и т. Д.

Это даст что-то вроде этого:

require_once '/path/to/external/AppKernel.php';
$class = 'Namespace\AppKernel';

// I tried this, but this does not work...
$loader = require_once $path . '/autoload.php';

/**
  * @var HttpKernel $kernel
  */
$kernel = new $class('dev', true);

// $request contains a custom Request object created with 'Request::create()'
$response = $kernel->handle($request);
$response->send();

$kernel->terminate($request, $response);

return $response;

Я думаю, что делаю все неправильно, пытаясь справиться с этим через AppKernel, может быть, кто-то знает лучший способ сделать вызов во внешний проект Symfony2 (без cURL).

Я действительно надеюсь, что кто-нибудь сможет мне помочь!

Штеффен

Ответы на вопрос(1)

Ваш ответ на вопрос