dms-filter

Library that offers Input Filtering based on Annotations for use with Objects. Check out 2.dev for 2.0 pre-release.

MIT License

Downloads
414.6K
Stars
94
Committers
6

DMS Filter Component

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

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();

    //Get a MetadataFactory
    $metadataFactory = new Mapping\ClassMetadataFactory($loader);

    //Get a FilterLoader
    $filterLoader = new \DMS\Filter\Filters\Loader\FilterLoader();

    //Get a Filter
    $filter = new DMS\Filter\Filter($metadataFactory, $filterLoader);


    //Get your Entity
    $user = new App\Entity\User();
    $user->name = "My <b>name</b>";
    $user->email = " [email protected]";

    //Filter you entity
    $filter->filterEntity($user);

    echo $user->name; //"My name"
    echo $user->email; //"[email protected]"
?>

Contributing

Feel free to send pull requests, just follow these guides:

  • Fork
  • Code
  • Test
    • Just create FilterTestCase and run phpunit
  • Submit PR

Credits

This library is inspired by the Symfony 2 Validator component and is meant to work alongside it.

Symfony Validator: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Validator