evyex/symfony-extender

Symfony bundle to must have features

Maintainers

Package info

github.com/evyex/symfony-extender

Type:symfony-bundle

pkg:composer/evyex/symfony-extender

Statistics

Installs: 33

Dependents: 0

Suggesters: 0

Stars: 0

8.0.0 2026-03-03 13:54 UTC

README

Latest Version Software License Build Status

A Symfony bundle that provides commonly used features and utilities to enhance your development workflow.

Installation

Install the bundle using Composer:

composer require evyex/symfony-extender

The bundle should be automatically registered by Symfony Flex. If not, add it to your config/bundles.php:

return [
    // ...
    Evyex\SymfonyExtender\SymfonyExtenderBundle::class => ['all' => true],
];

Features

1. Phone Number Validator

A simple validator for international phone numbers. It allows digits, spaces, hyphens, and parentheses, but ensures the underlying value follows a valid international format (e.g., +1234567890).

Usage:

use Evyex\SymfonyExtender\Validator\PhoneNumber;

class UserDTO
{
    #[PhoneNumber(message: 'Please provide a valid phone number.')]
    public string $phone;
}

2. MapEntityCollection Value Resolver

Automatically resolves a collection of entities from request query parameters. This is highly useful for list endpoints with filtering, ordering, and pagination support.

Detailed documentation: MapEntityCollection.md.

Usage in Controller:

use Evyex\SymfonyExtender\ValueResolver\MapEntityCollection\MapEntityCollection;
use App\Entity\Product;
use Doctrine\ORM\Tools\Pagination\Paginator;

#[Route('/products', methods: ['GET'])]
public function list(
    #[MapEntityCollection(
        class: Product::class,
        defaultOrdering: ['createdAt' => 'DESC']
    )]
    Paginator $products
): Response {
    // ...
}

3. IsGranted Attribute Decorator

Decorates the default Symfony controller.is_granted_attribute_listener to ensure it runs at the correct priority when used with other argument resolvers.

This works transparently in the background, ensuring that #[IsGranted] attributes on controller arguments are handled correctly before the value resolvers are called.

Quality Assurance

The project maintains high code quality standards:

  • Static Analysis: PHPStan
  • Coding Style: PHP-CS-Fixer
  • Testing: PHPUnit

You can run the full pipeline locally:

make pipeline

License

The MIT License (MIT). Please see License File for more information.