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); }
  	]);

最后的想法

没有最后的想法——这只是开始(