evyex / symfony-extender
Symfony bundle to must have features
Package info
github.com/evyex/symfony-extender
Type:symfony-bundle
pkg:composer/evyex/symfony-extender
Requires
- php: ^8.4
- doctrine/orm: ^3.5.4
- symfony/dependency-injection: ^8.0
- symfony/expression-language: ^8.0
- symfony/http-kernel: ^8.0
- symfony/property-access: ^8.0
- symfony/security-core: ^8.0
- symfony/security-http: ^8.0
- symfony/serializer: ^8.0
- symfony/validator: ^8.0
Requires (Dev)
- doctrine/doctrine-bundle: ^3.1
- friendsofphp/php-cs-fixer: ^3.92
- phpstan/phpstan: ^2.1
- phpunit/phpunit: >=12
- symfony/framework-bundle: ^8.0
- symfony/security-bundle: ^8.0
- symfony/var-exporter: ^8.0
README
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.