flsouto / pipe
该软件包最新版本(1.0.3)没有可用的许可证信息。
对输入数据进行一系列过滤和验证
1.0.3
2021-01-23 19:03 UTC
This package is not auto-updated.
Last update: 2024-09-15 12:20:16 UTC
README
概述
该库公开了一个简单的API,允许您对任意数据应用一系列的过滤器和/或验证器。
安装
通过composer
composer require flsouto/pipe
用法
以下示例添加了一个'trim'过滤器和自定义过滤器,该过滤器将4、1和0替换为a、i和o
require_once('vendor/autoload.php'); use FlSouto\Pipe; $pipe = new Pipe(); $pipe->add('trim')->add(function($value){ return str_replace(['4','1','0'],['a','i','o'],$value); }); $result = $pipe->run(' f4b10 '); echo $result->output;
上述代码将输出
fabio
所以您的过滤函数只需接受一个值,修改并返回它。
验证
以下示例使用相同的API,但这次确保输入值不包含数字'4'。
use FlSouto\Pipe; $pipe = new Pipe(); $pipe->add(function($value){ if(strstr($value,'4')){ echo 'The value cannot contain the number 4.'; } }); $result = $pipe->run('f4b10'); echo $result->error;
上述代码片段输出
The value cannot contain the number 4.
所以,如果您的过滤器打印某些内容,那么它被认为是验证器而不是常规过滤器。打印的错误消息将在$result->error
属性中可用。
一起使用过滤器和验证器
在以下代码片段中,过滤发生在验证之前,因此验证不会失败。
$pipe = new Pipe(); $pipe->add(function($value){ return str_replace('4','a',$value); }); $pipe->add(function($value){ if(strstr($value,'4')){ echo 'The value cannot contain the number 4.'; } }); $result = $pipe->run('f4b10');
这只是为了说明过滤器和验证器可以一起工作。注意它们应用的顺序与它们添加到管道中的顺序相同。
定义一个回退
回退方法允许您定义在发生任何错误时返回的默认值。默认回退始终是输入本身
$pipe = new Pipe(); $pipe->add(function($v){ iF(preg_match("/\d/",$v)){ echo "The value cannot contain digits."; } }); $result = $pipe->run($input="My name is 12345"); echo $result->output;
My name is 12345
使用回退方法更改默认值
$pipe = new Pipe(); $pipe->fallback('default'); $pipe->add(function($v){ iF(preg_match("/\d/",$v)){ echo "The value cannot contain digits."; } }); $result = $pipe->run('My name is 12345'); echo $result->output;
输出将如下所示
default
注意:回退值也用于输入值为null的情况。例如
$pipe = new Pipe(); $pipe->fallback('default'); $result = $pipe->run(null); echo $result->output;
输出将如下所示
default
但是,这种行为不适用于空字符串
$pipe = new Pipe(); $pipe->fallback('default'); $result = $pipe->run(''); var_dump($result->output);
string(0) ""
自定义回退行为
如果您想,例如,回退为null、空字符串或零,您必须向回退方法提供第二个参数
$pipe = new Pipe(); $pipe->fallback('default',[null,'',0]); $result = $pipe->run(''); echo $result->output;
输出将如下所示
default
替代语法
您可以使用addArray方法一次添加一个过滤器数组,或者可以通过接受过滤器数组的create方法实例化Pipe类
$pipe = Pipe::create([ 'trim', function($value){ return str_replace('_','/',$value); } ]);
最后的想法
没有最后的想法——这只是开始(