我对Guzzle内部的基本理解可能是导致此错误的原因(PHPUnit测试):
PHP致命错误:达到了“100”的最大函数嵌套级别, 中止!在 \供应商\狂饮\狂饮的\ src \狂饮\ HTTP \ QueryString.php 在第234行
以下部分(插件和解析器)似乎互相调用。 插件正在侦听command.before_send
事件,为request.exception
事件添加了一个闭包作为侦听器:
/**
* The plugin adds a closure listener for the event 'response.exception'. The
* closure is using the parser (RestInterfaceParser).
*/
class ResponseListener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array('command.before_send' => 'onCommandBeforeSend');
}
public function onCommandBeforeSend(Event $event)
{
// ...
$command = $event['command'];
$request = $command->getRequest();
$request->getEventDispatcher()->addListener(
'request.exception',
function (Event $event) use ($command, $parser) {
$parsed = $parser->parse($command);
// ...
}
);
}
}
到目前为止没什么特别的!当我尝试访问响应对象时,错误是由解析器引起的:
/**
* The parser invoked by the closure listener.
*/
class RestInterfaceParser implements ResponseParserInterface
{
public function parse(CommandInterface $command)
{
var_dump($command->getResponse());
}
}
删除该行会删除错误。但是,非常惊讶,我需要解析器中的响应对象。增加嵌套级别(xdebug.max_nesting_level = 1000
)没有用,因为它在这里是“纯粹的”递归。
答案 0 :(得分:0)