dms/dms-filter

DMS Filter 提供基于注解的实体过滤功能。

v5.0.0 2023-09-05 13:43 UTC

README

该库提供了一种服务,可以用于根据注解过滤对象值。

Latest Stable Version Total Downloads Latest Unstable Version License SensioLabsInsight Build StatusUnit Tests

安装

使用 composer 将 DMS\Filter 添加到您的应用中

composer require dms/dms-filter

使用方法

注解方式

您的实体

<?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;

}
?>

过滤

<?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"
?>

完整示例: https://gist.github.com/1098352

属性方式

您的实体

<?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;
}
?>

过滤

<?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"
?>

依赖

该包依赖于以下外部库

  • Doctrine Annotations

贡献

欢迎发送拉取请求,只需遵循以下指南

  • 分支
  • 代码
  • 测试
    • 只需创建 FilterTestCase 并运行 phpunit
  • 提交 PR

致谢

该库受到 Symfony 2 验证器组件的启发,旨在与其协同工作。

Symfony 2 验证器: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Validator