Trap — Functions
Trap is not just a server; it's also a useful collection of functions that help you debug your PHP applications.
trap()
Description
The trap()
function is designed to capture and send variable dumps to the server. It serves as the primary entry point for debugging PHP applications, allowing developers to inspect variables, trace execution flow, and analyze application state at runtime.
Note: When using
trap()
, it automatically configures$_SERVER['REMOTE_ADDR']
and$_SERVER['REMOTE_PORT']
if they are not already set. This ensures that the debug information is accurately captured and displayed.
Signature
function trap(mixed ...$values): TrapHandle
The function accepts any number of arguments (named or positional) and returns a TrapHandle
instance that provides additional debugging capabilities through method chaining.
Usage Examples
1. Basic Variable Dumping
// Dump a simple variable
trap($user);
// Dump multiple variables
trap($request, $response, $config);
// Use named arguments for better clarity
trap(user: $user, request: $request, response: $response);
This sends the variables to the Buggregator server where they can be inspected in the dashboard.
2. Stack Trace Inspection
// Add stack trace to your dump to see the execution flow
trap()->stackTrace();
// Dump a variable along with the stack trace
trap($result)->stackTrace();
This adds the current stack trace to your dump, showing the execution path that led to this point in your code.
3. Limiting Dump Depth
// Limit the dump depth to 4 levels for deeply nested objects
trap($complexObject)->depth(4);
// Dump multiple objects with depth limit
trap(user: $user, order: $order)->depth(2);
This is useful for complex objects where you want to limit how deep the dump will go into nested structures.
4. Conditional Dumping
// Dump only if a condition is met
trap($response)->if($statusCode >= 400);
// Using a callable for complex conditions
trap($query)->if(fn() => $query->count() > 100);
This lets you add conditional logic to your dumps, only showing them when specific conditions are met.
5. Limiting Dump Frequency
// Dump only once at this location in code
trap($i)->once();
// Dump only 5 times at this location
trap($i)->times(5);
// Dump only 3 times with full stack consideration (useful in recursion)
trap($recursiveData)->times(3, true);
This helps when debugging loops or recursive functions by limiting how many times the dump is shown.
6. Getting Values Back
// Dump a value and return it immediately
$result = trap($data)->return();
// Chain operations without breaking the flow
$response = $service->process(trap($request)->return());
// Return a specific named value
$name = trap(first: $firstName, last: $lastName)->return('last');
This allows you to insert debugging in the middle of expressions without disrupting your code flow.
7. Adding Context
// Add execution context to help understand the dump
trap($phpCode)->context(language: 'php', filename: 'Controller.php');
// Add context using an array
trap($data)->context(['environment' => 'production', 'user_id' => 42]);
// Shorthand for code highlighting
trap($sqlQuery)->code('sql');
This adds metadata to your dumps to provide more context for debugging.
8. Combining Multiple Features
// Combine multiple debugging features
trap($user)
->depth(3)
->if($user->isAdmin())
->context(role: 'admin', permissions: $user->getPermissions())
->once();
This example uses multiple features together to create a targeted debugging setup.
9. Working with Protobuf Messages
// Dump Protobuf messages with improved readability
trap($protoMessage);
The trap function includes special handling for Protocol Buffers, making them easier to debug.
10. Checking Performance with Ticks
// First tick
tr();
// Some code to measure
doSomething();
// Second tick will show time elapsed since first tick
tr();
The tr()
function (a short alias) can be used to measure performance between points in your code.
tr()
Description
The tr()
function is a shorthand alias for trap()->return()
. When called without arguments, it works as a performance ticker, measuring time and memory usage between calls.
Signature
function tr(mixed ...$values): mixed
Usage Examples
1. Performance Measurement
// Mark the starting point
tr();
// Execute the code to measure
$result = heavyComputation();
// Mark the endpoint and see elapsed time and memory usage
tr();
This shows time elapsed and memory usage between calls.
2. Quick Value Inspection
// Dump and return in one call
$user = tr($repository->findUser($id));
// Chain in expressions
return tr($response->withHeader('Content-Type', 'application/json'));
This lets you inspect values while keeping them in your execution flow.
td()
Description
The td()
function combines trap()
with PHP's die
statement, allowing you to dump values and terminate script execution. It's useful for quickly halting execution after inspecting critical values.
Signature
function td(mixed ...$values): never
Usage Examples
1. Debug and Die
// Dump value and terminate execution
td($error);
// Dump multiple values before terminating
td($request, $exception, $context);
This dumps the values to Buggregator and immediately terminates script execution.
2. Emergency Debugging
// When you need to stop and check what's happening
if ($unexpectedCondition) {
td(message: 'Unexpected condition', data: $data);
}
This is useful during development to quickly halt execution at critical points.
3. Performance Check and Die
// Start measuring
tr();
// Run code to analyze
$result = complexOperation();
// Check result and terminate
td($result);
This combines performance measurement with termination, useful for profiling.