Skip to content

chubbyphp/chubbyphp-framework-router-symfony

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8b0f480 · Mar 12, 2025

History

51 Commits
Mar 2, 2025
Jan 7, 2025
Mar 2, 2025
Mar 12, 2025
Dec 2, 2023
Oct 3, 2021
Jan 21, 2025
Mar 2, 2025
Mar 12, 2025
Feb 28, 2022
Jun 26, 2020
Dec 2, 2023
Feb 14, 2021

Repository files navigation

chubbyphp-framework-router-symfony

CI Coverage Status Mutation testing badge Latest Stable Version Total Downloads Monthly Downloads

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities

Description

Symfony Router implementation for chubbyphp-framework.

Requirements

Installation

Through Composer as chubbyphp/chubbyphp-framework-router-symfony.

composer require chubbyphp/chubbyphp-framework-router-symfony "^2.2"

Usage

<?php

declare(strict_types=1);

namespace App;

use Chubbyphp\Framework\Application;
use Chubbyphp\Framework\Middleware\ExceptionMiddleware;
use Chubbyphp\Framework\Middleware\RouterMiddleware;
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
use Chubbyphp\Framework\Router\Symfony\Router;
use Chubbyphp\Framework\Router\Route;
use Psr\Http\Message\ServerRequestInterface;
use Slim\Psr7\Factory\ResponseFactory;
use Slim\Psr7\Factory\ServerRequestFactory;

$loader = require __DIR__.'/vendor/autoload.php';

$responseFactory = new ResponseFactory();

$app = new Application([
    new ExceptionMiddleware($responseFactory, true),
    new RouterMiddleware(new SymfonyRouter([
        Route::get('/hello/{name}', 'hello', new CallbackRequestHandler(
            function (ServerRequestInterface $request) use ($responseFactory) {
                $name = $request->getAttribute('name');
                $response = $responseFactory->createResponse();
                $response->getBody()->write(sprintf('Hello, %s', $name));

                return $response;
            }
        ), [], [SymfonyRouter::PATH_REQUIREMENTS => ['name' => '[a-z]+']])
    ])),
]);

$app->emit($app->handle((new ServerRequestFactory())->createFromGlobals()));

Copyright

2025 Dominik Zogg