mirror of
https://github.com/maximebf/php-debugbar.git
synced 2025-07-27 11:40:25 +02:00
68 lines
2.5 KiB
Markdown
68 lines
2.5 KiB
Markdown
# Server handlers
|
|
|
|
Some widgets one the client side debugbar need to execute commands on the server
|
|
side. The DebugBar provides the infrastructure to do so but you will need to
|
|
create an endpoint to receive commands.
|
|
|
|
## The front controller
|
|
|
|
Commands are handled using a `DebugBar\ServerHandler\FrontController` instance.
|
|
You can instanciate one using `DebugBar\DebugBar::createServerHandlerFrontController()`.
|
|
|
|
$fc = $debugbar->createServerHandlerFrontController();
|
|
$fc->handle();
|
|
|
|
Calling `handle()` will use data from the `$_REQUEST` array and echo the output.
|
|
The function also supports input from other source if you provide an array as
|
|
first argument. It can also return the data instead of echoing (use false as
|
|
second argument) and not send the content-type header (use false as third argument).
|
|
|
|
Once you have setup the fornt controller, tell the `JavascriptRenderer` its url.
|
|
|
|
$renderer->setServerHandlerUrl('server.php');
|
|
|
|
When the FrontController is instanciated, all collectors which implement
|
|
`DebugBar\ServerHandler\ServerHandlerInterface` or `DebugBar\ServerHandler\ServerHandlerFactoryInterface`
|
|
will be registered. You can register more server handlers using `FrontController::registerHandler()`.
|
|
|
|
## Creating server handlers
|
|
|
|
Handlers can be any class implementing the `DebugBar\ServerHandler\ServerHandlerInterface`.
|
|
Two methods are required: `getName()` and `getCommandNames()`. The first one must return
|
|
a string with this handler's name and the second ones an array of string listing allowed
|
|
methods to be called.
|
|
|
|
A command is simply a method which will receive two arguments, a `$request` array containing
|
|
the parameters and the `DebugBar` instance.
|
|
|
|
class MyServerHandler implements DebugBar\ServerHandler\ServerHandlerInterface
|
|
{
|
|
public function getName()
|
|
{
|
|
return 'my';
|
|
}
|
|
|
|
public function getCommandNames()
|
|
{
|
|
return array('ping');
|
|
}
|
|
|
|
public function ping($request, $debugbar)
|
|
{
|
|
return 'pong';
|
|
}
|
|
}
|
|
|
|
When a command method is called, its return will be sent back as JSON to the client.
|
|
|
|
## Open handler
|
|
|
|
The open handler allows you to re-open previously executed requests saved using
|
|
the storage mechanism.
|
|
|
|
The OpenHandler is automatically registered when a FrontController is instanciated
|
|
and a storage is defined on the debugbar.
|
|
|
|
This adds a button in the top right corner of the debug bar which allows you
|
|
to browse and open previous sets of collected data.
|