【发布时间】:2013-12-02 09:05:39
【问题描述】:
首先我想说我发现 Symfony2 是一个了不起的框架,所以我正在使用 FOSRestBundle 等创建一个 RESTful API。但我的目标不是只支持一个带有 API 的 symfony2 应用程序,我需要多个其他应用程序symfony2 应用程序与 API 交互。我确实可以使用 cURL 来做到这一点,只需向 API 发出普通的 http 请求,但是因为 API 总是与所有其他项目在同一台服务器上,我想直接通过它的内核处理 API 请求(所以没有卷曲)。当然,这会带来惊人的速度提升,同时也减少了资源的使用。
所以,为了实现这一点,我首先想到的是简单地从其目的地要求 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)。
我真的希望有人可以帮助我!
史蒂芬
【问题讨论】:
标签: php symfony curl request kernel