蛋白质/过滤器

类特性,允许用户通过回调钩子覆盖数据

1.0.3 2019-05-28 14:29 UTC

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