1
0
mirror of https://github.com/maximebf/php-debugbar.git synced 2025-06-09 07:35:04 +02:00
php-debugbar/docs/base-collectors.html
Barry vd. Heuvel d07c5fc73a Add canonical
2025-02-13 20:23:44 +01:00

428 lines
12 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>PHP Debug Bar</title>
<link rel="canonical" href="https://php-debugbar.com/collectors/base/" />
<link type="text/css" rel="stylesheet" href="/docs/assets/css/reset.css">
<link type="text/css" rel="stylesheet" href="http://yandex.st/highlightjs/6.1/styles/sunburst.min.css">
<link type="text/css" rel="stylesheet" href="/docs/assets/css/docs.css">
<link type="text/css" rel="stylesheet" href="/docs/assets/css/print.css" media="print">
<link type="text/css" rel="stylesheet" href="style.css">
<script type="text/javascript" src="/docs/assets/js/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="http://yandex.st/highlightjs/6.1/highlight.min.js"></script>
<script type="text/javascript" src="/docs/assets/js/lunr.min.js"></script>
<script type="text/javascript">var BASE_URL = "/docs/";</script>
<script type="text/javascript" src="/docs/assets/js/viewer.js"></script>
</head>
<body>
<div id="page">
<a name="top" />
<header id="header">
<h1><a href="/docs/">PHP Debug Bar</a></h1>
</header>
<div id="sidebar">
<form action="/docs/search.html"><input id="search" type="text" placeholder="Search" name="q" /></form>
<nav id="toc">
<ol>
<li>
<a href="/docs/readme.html#php-debug-bar">PHP Debug Bar</a>
<ol>
<li>
<a href="/docs/readme.html#installation">Installation</a>
</li>
<li>
<a href="/docs/readme.html#quick-start">Quick start</a>
</li>
</ol>
</li>
<li>
<a href="/docs/data-collectors.html#collecting-data">Collecting Data</a>
<ol>
<li>
<a href="/docs/data-collectors.html#using-collectors">Using collectors</a>
</li>
<li>
<a href="/docs/data-collectors.html#creating-collectors">Creating collectors</a>
</li>
</ol>
</li>
<li>
<a href="/docs/rendering.html#rendering">Rendering</a>
<ol>
<li>
<a href="/docs/rendering.html#assets">Assets</a>
</li>
<li>
<a href="/docs/rendering.html#managing-jquery-conflicts">Managing jQuery conflicts</a>
</li>
<li>
<a href="/docs/rendering.html#the-javascript-object">The javascript object</a>
</li>
</ol>
</li>
<li>
<a href="/docs/ajax-and-stack.html#ajax-and-stacked-data">AJAX and Stacked data</a>
<ol>
<li>
<a href="/docs/ajax-and-stack.html#ajax">AJAX</a>
</li>
<li>
<a href="/docs/ajax-and-stack.html#stacked-data">Stacked data</a>
</li>
</ol>
</li>
<li>
<a href="/docs/base-collectors.html#base-collectors">Base collectors</a>
<ol>
<li>
<a href="/docs/base-collectors.html#messages">Messages</a>
</li>
<li>
<a href="/docs/base-collectors.html#timedata">TimeData</a>
</li>
<li>
<a href="/docs/base-collectors.html#exceptions">Exceptions</a>
</li>
<li>
<a href="/docs/base-collectors.html#pdo">PDO</a>
</li>
<li>
<a href="/docs/base-collectors.html#requestdata">RequestData</a>
</li>
<li>
<a href="/docs/base-collectors.html#config">Config</a>
</li>
<li>
<a href="/docs/base-collectors.html#aggregatedcollector">AggregatedCollector</a>
</li>
<li>
<a href="/docs/base-collectors.html#others">Others</a>
</li>
</ol>
</li>
<li>
<a href="/docs/bridge-collectors.html#bridge-collectors">Bridge collectors</a>
<ol>
<li>
<a href="/docs/bridge-collectors.html#cachecache">CacheCache</a>
</li>
<li>
<a href="/docs/bridge-collectors.html#doctrine">Doctrine</a>
</li>
<li>
<a href="/docs/bridge-collectors.html#monolog">Monolog</a>
</li>
<li>
<a href="/docs/bridge-collectors.html#propel">Propel</a>
</li>
<li>
<a href="/docs/bridge-collectors.html#slim">Slim</a>
</li>
<li>
<a href="/docs/bridge-collectors.html#swift-mailer">Swift Mailer</a>
</li>
<li>
<a href="/docs/bridge-collectors.html#twig">Twig</a>
</li>
</ol>
</li>
<li>
<a href="/docs/data-formatter.html#data-formatter">Data Formatter</a>
<ol>
</ol>
</li>
<li>
<a href="/docs/storage.html#storage">Storage</a>
<ol>
<li>
<a href="/docs/storage.html#available-storage">Available storage</a>
</li>
<li>
<a href="/docs/storage.html#creating-your-own-storage">Creating your own storage</a>
</li>
<li>
<a href="/docs/storage.html#request-id-generator">Request ID generator</a>
</li>
</ol>
</li>
<li>
<a href="/docs/openhandler.html#open-handler">Open handler</a>
<ol>
</ol>
</li>
<li>
<a href="/docs/http-drivers.html#http-drivers">HTTP drivers</a>
<ol>
</ol>
</li>
<li>
<a href="/docs/javascript-bar.html#javascript-bar">Javascript Bar</a>
<ol>
<li>
<a href="/docs/javascript-bar.html#tabs-and-indicators">Tabs and indicators</a>
</li>
<li>
<a href="/docs/javascript-bar.html#data-mapping">Data mapping</a>
</li>
<li>
<a href="/docs/javascript-bar.html#datasets">Datasets</a>
</li>
<li>
<a href="/docs/javascript-bar.html#widgets">Widgets</a>
</li>
<li>
<a href="/docs/javascript-bar.html#custom-tabs-and-indicators">Custom tabs and indicators</a>
</li>
<li>
<a href="/docs/javascript-bar.html#openhandler">OpenHandler</a>
</li>
</ol>
</li>
</ol>
</nav>
<nav id="links">
<ul>
</ul>
</nav>
</div>
<div id="content">
<a name="base-collectors"></a><h1>Base collectors</h1>
<p>Collectors provided in the <code>DebugBar\DataCollector</code> namespace.</p>
<a name="messages"></a><h2>Messages</h2>
<p>Provides a way to log messages (compatible with <a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md">PSR-3 logger</a>).</p>
<pre><code>$debugbar-&gt;addCollector(new DebugBar\DataCollector\MessagesCollector());
$debugbar[&#39;messages&#39;]-&gt;info(&#39;hello world&#39;);</code></pre>
<p>You can have multiple messages collector by naming them:</p>
<pre><code>$debugbar-&gt;addCollector(new MessagesCollector(&#39;io_ops&#39;));
$debugbar[&#39;io_ops&#39;]-&gt;info(&#39;opening files&#39;);</code></pre>
<p>You can aggregate messages collector into other to have a unified view:</p>
<pre><code>$debugbar[&#39;messages&#39;]-&gt;aggregate($debugbar[&#39;io_ops&#39;]);</code></pre>
<p>If you don&#39;t want to create a standalone tab in the debug bar but still be able
to log messages from a different collector, you don&#39;t have to add the collector
to the debug bar:</p>
<pre><code>$debugbar[&#39;messages&#39;]-&gt;aggregate(new MessagesCollector(&#39;io_ops&#39;));</code></pre>
<a name="timedata"></a><h2>TimeData</h2>
<p>Provides a way to log total execution time as well as taking &quot;measures&quot; (ie. measure the execution time of a particular operation).</p>
<pre><code>$debugbar-&gt;addCollector(new DebugBar\DataCollector\TimeDataCollector());
$debugbar[&#39;time&#39;]-&gt;startMeasure(&#39;longop&#39;, &#39;My long operation&#39;);
sleep(2);
$debugbar[&#39;time&#39;]-&gt;stopMeasure(&#39;longop&#39;);
$debugbar[&#39;time&#39;]-&gt;measure(&#39;My long operation&#39;, function() {
sleep(2);
});</code></pre>
<p>Displays the measures on a timeline</p>
<a name="exceptions"></a><h2>Exceptions</h2>
<p>Display exceptions</p>
<pre><code>$debugbar-&gt;addCollector(new DebugBar\DataCollector\ExceptionsCollector());
try {
throw new Exception(&#39;foobar&#39;);
} catch (Exception $e) {
$debugbar[&#39;exceptions&#39;]-&gt;addException($e);
}</code></pre>
<a name="pdo"></a><h2>PDO</h2>
<p>Logs SQL queries. You need to wrap your <code>PDO</code> object into a <code>DebugBar\DataCollector\PDO\TraceablePDO</code> object.</p>
<pre><code>$pdo = new DebugBar\DataCollector\PDO\TraceablePDO(new PDO(&#39;sqlite::memory:&#39;));
$debugbar-&gt;addCollector(new DebugBar\DataCollector\PDO\PDOCollector($pdo));</code></pre>
<p>You can even log queries from multiple <code>PDO</code> connections:</p>
<pre><code>$pdoRead = new DebugBar\DataCollector\PDO\TraceablePDO(new PDO(&#39;sqlite::memory:&#39;));
$pdoWrite = new DebugBar\DataCollector\PDO\TraceablePDO(new PDO(&#39;sqlite::memory:&#39;));
$pdoCollector = new DebugBar\DataCollector\PDO\PDOCollector();
$pdoCollector-&gt;addConnection($pdoRead, &#39;read-db&#39;);
$pdoCollector-&gt;addConnection($pdoWrite, &#39;write-db&#39;);
$debugbar-&gt;addCollector($pdoCollector);</code></pre>
<a name="requestdata"></a><h2>RequestData</h2>
<p>Collects the data of PHP&#39;s global variables</p>
<pre><code>$debugbar-&gt;addCollector(new DebugBar\DataCollector\RequestDataCollector());</code></pre>
<a name="config"></a><h2>Config</h2>
<p>Used to display any key/value pairs array</p>
<pre><code>$data = array(&#39;foo&#39; =&gt; &#39;bar&#39;);
$debugbar-&gt;addCollector(new DebugBar\DataCollector\ConfigCollector($data));</code></pre>
<p>You can provide a different name for this collector in the second argument of the constructor.</p>
<a name="aggregatedcollector"></a><h2>AggregatedCollector</h2>
<p>Aggregates multiple collectors. Do not provide any widgets, you have to add your own controls.</p>
<pre><code>$debugbar-&gt;addCollector(new DebugBar\DataCollector\AggregatedCollector(&#39;all_messages&#39;, &#39;messages&#39;, &#39;time&#39;));
$debugbar[&#39;all_messages&#39;]-&gt;addCollector($debugbar[&#39;messages&#39;]);
$debugbar[&#39;all_messages&#39;]-&gt;addCollector(new MessagesCollector(&#39;mails&#39;));
$debugbar[&#39;all_messages&#39;][&#39;mails&#39;]-&gt;addMessage(&#39;sending mail&#39;);
$renderer = $debugbar-&gt;getJavascriptRenderer();
$renderer-&gt;addControl(&#39;all_messages&#39;, array(
&#39;widget&#39; =&gt; &#39;PhpDebugBar.Widgets.MessagesWidget&#39;,
&#39;map&#39; =&gt; &#39;all_messages&#39;,
&#39;default&#39; =&gt; &#39;[]&#39;;
));</code></pre>
<a name="others"></a><h2>Others</h2>
<p>Misc collectors which you can just register:</p>
<ul>
<li><code>MemoryCollector</code> (<em>memory</em>): Display memory usage</li>
<li><code>PhpInfoCollector</code> (<em>php</em>): PHP version number</li>
</ul>
</div>
<footer id="footer">
Powered by <a href="http://github.com/maximebf/beautiful-docs">beautiful-docs</a> -
<a href="#top">Back to top</a> - <a href="/docs/all.html">Everything on a single page</a>
- <a href="?print=1">Print current page</a> - <a href="/docs/all.html?print=1">Print all pages</a>
</footer>
</div>
</body>
</html>