13.2. 过滤器链

通常,多个过滤器可以以一个特定的顺序应用到某个值上。例如,登录表单的用户名,应为英文字符且小写。Zend_Filter提供了一个简单的方法,使过滤器可以链接在一起。下面的代码描述了怎样把2个过滤器链接起来且应用到提交上来的用户名值上:


<?php
// Provides filter chaining capability
require_once 'Zend/Filter.php';

// Filters needed for the example
require_once 'Zend/Filter/Alpha.php';
require_once 
'Zend/Filter/StringToLower.php';

// Create a filter chain and add filters to the chain
$filterChain = new Zend_Filter();
$filterChain->addFilter(new Zend_Filter_Alpha())
            ->
addFilter(new Zend_Filter_StringToLower());

// Filter the username
$username $filterChain->filter($_POST['username']);

过滤器按照他们被添加到Zend_Filter中去的顺序依次执行。上面的例子中,用户名首先被移除任何非英文字母的字符,然后将所有大写字符转化为小写字符。

任何实现了Zend_Filter_Interface接口的,都可被添加到过滤器链中。