PHP code example of sonata / framework

1. Go to this page and download the library: Download sonata/framework library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

sonata / framework example snippets




use Sonata\Framework\Container\Container;
use Sonata\Framework\Router;
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Validator\ValidatorInterface;

n () {
    return Validation::createValidatorBuilder()
        ->enableAttributeMapping()
        ->getValidator();
});

$container->set(PDO::class, static function (): PDO {
    return new PDO(
        sprintf('mysql:host=%s;port=%d;dbname=%s', $_ENV['DB_HOST'], $_ENV['DB_PORT'], $_ENV['DB_NAME']),
        $_ENV['DB_USER'],
        $_ENV['DB_PASS'],
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]
    );
});

$router = new Router($container, $_ENV['APP_ENV'] === 'dev', null, __DIR__);
$router->registerControllers();
$router->dispatch(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ?: '/',
    $_SERVER['REQUEST_METHOD']
);

use Sonata\Framework\Attributes\Controller;
use Sonata\Framework\Attributes\Route;
use Sonata\Framework\Attributes\From;
use Sonata\Framework\Attributes\Tag;

#[Controller(prefix: '/api')]
#[Tag('Пользователи')]
final class UserController
{
    #[Route(path: '/users', method: 'POST', summary: 'Создать пользователя')]
    public function create(#[From('json')] UserCreateDto $dto): array
    {
        return ['ok' => true];
    }
}

$router = new Router($container, $debug, null, __DIR__);
$router->addMiddleware(\App\Middleware\AuthMiddleware::class);

use Sonata\Framework\Attributes\NoAuth;

final class AuthController
{
    #[NoAuth]
    public function login(): array { /* ... */ }
}

use Sonata\Framework\MediaHelper\MediaHelper;

$media = new MediaHelper('/avatars');
$media->setNames(['avatar']);
$result = $media->import();