蛋白质 / 过滤器
类特性,允许用户通过回调钩子覆盖数据
1.0.3
2019-05-28 14:29 UTC
Requires
- php: ^7.2
This package is auto-updated.
Last update: 2024-08-29 05:18:28 UTC
README
蛋白质 | 过滤器
类特性,允许用户通过回调钩子覆盖数据
安装
composer require proteins/filter
通过
use Proteins\Filter;
或在你的类中包含特性
use Proteins\Filters; class MyClass { use Filters; }
添加过滤器
您可以通过 add
方法将过滤器函数附加到自定义命名的组。
Filter::add('title',function($title){ return strtoupper($title); });
对同一组多次调用将附加多个过滤器函数。
// Concatenate effects : Filter::add('title',function($title){ return strtoupper($title); }); Filter::add('title',function($title){ return $title . '!'; });
您可以通过使用键的数组来将单个回调分配给多个过滤器
Filter::add(['href','src'], function($link){ return BASE_URL . $link; });
这等同于
Filter::add('href', function($link){ return BASE_URL . $link; }); Filter::add('src', function($link){ return BASE_URL . $link; });
您还可以传递一个数组映射 filter => callback
Filter::add([ 'src' => function($src){ return BASE_URL . $src; }, 'href' => function($href){ return HTTPS . $href; }, ]);
这等同于
Filter::add('href', function($href){ return HTTPS . $href; }); Filter::add('src', function($src){ return BASE_URL . $src; });
移除过滤器
您可以通过 remove
方法移除附加到自定义命名的组的过滤器函数。
$the_filter = function($title){ return strtoupper($title); }; Filter::add('title',$the_filter); ... Filter::remove('title',$the_filter);
如果不传递过滤器函数,您可以移除组中所有附加的过滤器。
Filter::remove('title');
应用过滤器
您可以通过 with
方法将过滤器应用于一个值。
Filter::with('title','This was a triumph')
示例
Filter::add('title',function($title){ return strtoupper($title); }); Filter::add('title',function($title){ return $title . '!'; }); echo Filter::with('title','This was a triumph'); // THIS WAS A TRIUMPH!
可以传递多个后备键,将使用第一个非空队列作为当前过滤器的当前过滤器。
Filter::with(["document.title", "title"],'This was a triumph')
示例
Filter::add("title", "strtoupper"); echo Filter::with(["document.title", "title"],'This was a triumph');
将执行 title
过滤器而不是空的 document.title
。
THIS WAS A TRIUMPH
Filter::add("title", "strtoupper"); Filter::add("document.title", "str_rot13"); echo Filter::with(["document.title", "title"],'This was a triumph');
这里将执行 document.title
过滤器而不是 title
。
Guvf jnf n gevhzcu