phpfluent / filter
0.3.0
2015-04-14 22:09 UTC
Requires
Requires (Dev)
- phpmd/phpmd: ~1.5
- phpunit/phpunit: ~4.1
- squizlabs/php_codesniffer: ~1.5
This package is auto-updated.
Last update: 2024-09-09 15:20:25 UTC
README
提供更好的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。