phpfluent/filter

0.3.0 2015-04-14 22:09 UTC

This package is auto-updated.

Last update: 2024-09-09 15:20:25 UTC


README

Build Status Total Downloads License Latest Stable Version Latest Unstable Version

提供更好的API来处理Zend过滤器。

安装

该包可在 Packagist 上找到,您可以使用 Composer 进行安装。

composer require phpfluent/filter

用法

静态API的灵感来源于 Respect\Validation

命名空间导入

PHPFluent\Filter 是命名空间化的,但您可以通过将单个类导入到上下文中来使生活更简单

use PHPFluent\Filter\Builder as f;

调用过滤器

f::stringToUpper()->filter('phpfluent'); // returns: 'PHPFLUENT'

调用多个过滤器

f::stringToUpper()
 ->stringTrim()
 ->filter('filter    '); // returns 'FILTER'

调用原生PHP函数

f::json_encode(JSON_PRETTY_PRINT)
 ->filter(array('key' => 'value')); // returns: '{"key": "value"}'

非静态API

您还可以简单地创建一个 PHPFluent\Filter\Builder 实例。

$builder = new PHPFluent\Filter\Builder();
$builder->ucfirst();
$builder->str_pad(10, '-');
$builder->filter('filter'); // returns: 'Filter----'

调用Builder类

PHPFluent\Filter\Builder 实现了 __invoke() 方法,所以您可以这样做

$builder('filter'); // returns: 'Filter----'

自定义过滤器

您可以使用自己的Zend过滤器。

f::myFilter();

为此,我们提供了一种方法来添加您自己的命名空间/前缀

f::getDefaultFactory()->appendPrefix('My\\Filter\\Prefix');

因此,在上面的示例中 v::myFilter() 将调用 My\Filter\PrefixMyFilter

您可以实现自己的过滤器。

use PHPFluent\Filter\FilterInterface;

class UrlFilter implements FilterInterface
{
    public function filter($value)
    {
        return filter_var($value, FILTER_SANITIZE_URL);
    }
}

过滤器工厂

要按名称创建过滤器,我们使用我们的工厂;有两种方法可以更改要使用的工厂。

静态调用

$factory = new PHPFluent\Filter\Factory();
$factory->prependPrefix('My\\Zend\\Filters\\');

PHPFluent\Filter\Builder::setDefaultFactory($factory);

在上面的示例中,定义的工厂将用于所有静态调用。

非静态调用

$factory = new PHPFluent\Filter\Factory();
$factory->prependPrefix('My\\Zend\\Filters\\');

$builder = new PHPFluent\Filter\Builder($factory);

在上面的示例中,定义的工厂将仅用于 $builder 实例变量。

如您所注意到的,工厂实例是可选的,因此,当您为构建器对象定义了一个工厂时,它将使用默认的,在 getDefaultFactory() 上定义的。

PHPFluent过滤器

key()

允许在数组键上执行过滤器。

f::key('foo', f::boolean())
    ->filter(array('foo' => 1, 'baz' => 'Whatever')); // array('foo' => true)

如果您在寻找更具体的东西,您应该看看 Zend\InputFilter