devl0pr/request-manager-bundle
Installation
composer require devl0pr/request-manager-bundle
Add to config/bundles.php:
Devl0pr\RequestManagerBundle\RequestManagerBundle::class => ['all' => true],
First Use Case: Logging Requests
Inject RequestManager into a controller/service:
use Devl0pr\RequestManagerBundle\Request\RequestManager;
public function __construct(private RequestManager $requestManager) {}
public function index(Request $request) {
$this->requestManager->logRequest($request); // Logs full request data
return new Response('Request logged!');
}
Where to Look First
src/Request/README.md (for HTTP request handling).src/Problem/README.md (for structured error responses).config/packages/devl0pr_request_manager.yaml (if auto-generated).Request Logging & Debugging
$this->requestManager->logRequest($request, 'user_action');
devl0pr_request_manager:
request_logging:
blacklist: ['password', 'api_key']
Structured Error Responses
JsonResponse with SmartProblem:
use Devl0pr\RequestManagerBundle\Problem\SmartProblem;
return new SmartProblem(
'Invalid input',
SmartProblem::HTTP_UNPROCESSABLE_ENTITY,
['field' => 'email', 'error' => 'Invalid format']
);
templates/problem/error.html.twig.Middleware Integration
RequestManager to middleware for global logging:
public function handle(Request $request, Closure $next) {
$this->requestManager->logRequest($request, 'middleware');
return $next($request);
}
API Versioning
$this->requestManager->setRequestVersion($request, 'v2');
kernel.request to log all incoming requests:
$eventDispatcher->addListener(KernelEvents::REQUEST, function (RequestEvent $event) {
$this->requestManager->logRequest($event->getRequest());
});
devl0pr_request_manager:
request_logging:
handler: monolog.handler.main
RequestManager in tests:
$this->requestManager->shouldReceive('logRequest')->once();
Performance Overhead
devl0pr_request_manager:
request_logging:
enabled: '%kernel.debug%' # Only in dev
devl0pr_request_manager:
request_logging:
excluded_paths: ['/health', '/public/*']
Sensitive Data Leaks
whitelist for critical data:
devl0pr_request_manager:
request_logging:
whitelist: ['user_id', 'session_token']
SmartProblem Serialization
JsonSerializable or Arrayable. Example:
class CustomProblem implements JsonSerializable {
public function jsonSerialize() {
return ['code' => 422, 'message' => 'Custom error'];
}
}
Configuration Conflicts
SmartProblem templates override fails, clear cache:
php bin/console cache:clear
config/packages/twig.yaml.var/log/request_manager.log. Change via:
devl0pr_request_manager:
request_logging:
log_file: '%kernel.logs_dir%/custom_requests.log'
devl0pr_request_manager:
request_logging:
debug: true
composer require --dev phpunit/phpunit ^9.5
vendor/bin/phpunit --testdoxhtml
Custom Log Handlers
Devl0pr\RequestManagerBundle\Request\LoggerInterface:
class DatabaseLogger implements LoggerInterface {
public function log(Request $request, string $context = null) {
// Save to DB
}
}
devl0pr_request_manager:
request_logging:
logger: App\Service\DatabaseLogger
Dynamic Error Templates
SmartProblem templates in templates/devl0pr_request_manager/problem/.error.json.twig for custom JSON structures.Request Transformation
RequestManager to modify requests before logging:
$this->requestManager->extend(function (Request $request) {
$request->headers->set('X-Processed', 'true');
});
API Rate Limiting
SmartProblem for rate-limit responses:
return new SmartProblem(
'Too Many Requests',
SmartProblem::HTTP_TOO_MANY_REQUESTS,
['retry_after' => 60]
);
---
```markdown
**Note**: Due to the package's low activity (last release in 2022), validate compatibility with your Laravel/Symfony version (e.g., test with PHP 8.1+ and Symfony 6.x). Consider forking if critical features are missing.
How can I help you explore Laravel packages today?