gpt4 book ai didi

debugging - 如何使用自定义数据扩展 Symfony2 调试工具栏?

转载 作者:行者123 更新时间:2023-12-02 23:10:24 24 4
gpt4 key购买 nike

我想用我自己的自定义数据扩展 Symfony2 调试工具栏。

我有一个服务,我想在其中记录特定的方法调用,然后将它们显示在 Web 调试工具栏中。

我读了cookbook article ,但这不是很有帮助。

我创建了自己的 DataCollector 类:

class PermissionDataCollector extends DataCollector
{
private $permissionCalls = array();

private $permissionExtension;

public function __construct(PermissionExtension $permissionExtension)
{
$this->permissionExtension = $permissionExtension;
}

/**
* Collects data for the given Request and Response.
*
* @param Request $request A Request instance
* @param Response $response A Response instance
* @param \Exception $exception An Exception instance
*
* @api
*/
public function collect(Request $request, Response $response, \Exception $exception = null)
{
$this->permissionCalls = $this->permissionExtension->getPermissionCalls();

$this->data = array(
'calls' => $this->permissionCalls
);
}
public function getPermissionCallsCount()
{
return count($this->permissionCalls);
}

public function getFailedPermissionCallsCount()
{
return count(array_filter($this->permissionCalls, array(&$this, "filterForFailedPermissionCalls")));
}

private function filterForFailedPermissionCalls($var)
{
return $var['success'];
}

/**
* Returns the name of the collector.
*
* @return string The collector name
*
* @api
*/
public function getName()
{
return 'permission';
}
}

PermissionExtension 记录所有调用,然后我想检索此调用数组PermissionDataCollector

模板仅输出 {{ Collector.permissionCallsCount }}

该部分显示在工具栏中,但它只显示 0,这是错误的。

我不确定我这样做是否正确,因为文档缺少此部分。我正在使用 Symfony 2.1

有人用自定义数据扩展了工具栏吗?

最佳答案

ah great! It works. I basically need to refer to $this->data all the time.

原因是 ->data 由 Symfony\Component\HttpKernel\DataCollector\DataCollector 使用并序列化(请参阅 DataCollector::serialize)。

这随后被存储(不知何故,我不知道在哪里,但后来被反序列化)。如果您使用自己的属性,DataCollector::unserialize 只是修剪您的数据。

参见https://symfony.com/doc/current/profiler/data_collector.html#creating-a-custom-data-collector

As the profiler serializes data collector instances, you should not store objects that cannot be serialized (like PDO objects) or you need to provide your own serialize() method.

只需始终使用 $this->data,或实现您自己的 \Serialized 序列化。

关于debugging - 如何使用自定义数据扩展 Symfony2 调试工具栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com