dms / dms-filter
DMS Filter provides Annotation based entity filtering.
Installs: 413 175
Dependents: 2
Suggesters: 0
Security: 0
Stars: 94
Watchers: 6
Forks: 19
Open Issues: 7
Requires
- php: ~8.0 || ~8.1
- doctrine/annotations: ^1.13
- laminas/laminas-zendframework-bridge: ^1.0
Requires (Dev)
- dms/coding-standard: ^12
- doctrine/cache: ~1.3
- laminas/laminas-filter: ^2.9
- phpunit/phpunit: ^9
Suggests
- ext-mbstring: for encoding safety
- laminas/laminas-filter: Use Laminas Filters via DMS Filter
- dev-master
- v5.0.0
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.0
- v2.0.0
- 1.x-dev
- v1.1.1
- v1.1
- 1.0.2
- dev-dependabot/composer/doctrine/annotations-tw-1.13or-tw-2.0
- dev-dependabot/composer/doctrine/cache-2.2.0
- dev-dependabot/composer/doctrine/annotations-2.0.1
- dev-task/phpstan-effort
- dev-dependabot/add-v2-config-file
- dev-refactoring/php7
- dev-2.dev
This package is auto-updated.
Last update: 2024-09-06 00:34:02 UTC
README
This library provides a service that can be used to filter object values based on annotations
Install
Use composer to add DMS\Filter to your app
composer require dms/dms-filter
Usage
Annotation way
Your Entity:
<?php namespace App\Entity; //Import Annotations use DMS\Filter\Rules as Filter; class User { /** * @Filter\StripTags() * @Filter\Trim() * @Filter\StripNewlines() * * @var string */ public string $name; /** * @Filter\StripTags() * @Filter\Trim() * @Filter\StripNewlines() * * @var string */ public string $email; } ?>
Filtering:
<?php //Get Doctrine Reader $reader = new Annotations\AnnotationReader(); $reader->setEnableParsePhpImports(true); //Load AnnotationLoader $loader = new Mapping\Loader\AnnotationLoader($reader); $this->loader = $loader; //Get a MetadataFactory $metadataFactory = new Mapping\ClassMetadataFactory($loader); //Get a Filter $filter = new DMS\Filter\Filter($metadataFactory); //Get your Entity $user = new App\Entity\User(); $user->name = "My <b>name</b>"; $user->email = " email@mail.com"; //Filter you entity $filter->filter($user); echo $user->name; //"My name" echo $user->email; //"email@mail.com" ?>
Full example: https://gist.github.com/1098352
Attribute way
Your Entity:
<?php namespace App\Entity; //Import Attributes use DMS\Filter\Rules as Filter; class User { #[Filter\StripTags] #[Filter\Trim] #[Filter\StripNewlines] public string $name; #[Filter\StripTags] #[Filter\Trim] #[Filter\StripNewlines] public string $email; } ?>
Filtering:
<?php //Load AttributeLoader $loader = new Mapping\Loader\AttributeLoader(); $this->loader = $loader; //Get a MetadataFactory $metadataFactory = new Mapping\ClassMetadataFactory($loader); //Get a Filter $filter = new DMS\Filter\Filter($metadataFactory); //Get your Entity $user = new App\Entity\User(); $user->name = "My <b>name</b>"; $user->email = " email@mail.com"; //Filter you entity $filter->filter($user); echo $user->name; //"My name" echo $user->email; //"email@mail.com" ?>
Dependencies
This package relies on these external libraries:
- Doctrine Annotations
Contributing
Feel free to send pull requests, just follow these guides:
- Fork
- Code
- Test
- Just create FilterTestCase and run
phpunit
- Just create FilterTestCase and run
- Submit PR
Credits
This library is inspired by the Symfony 2 Validator component and is meant to work alongside it.
Symfony 2 Validator: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Validator