TigerZF
🌐Español

35.3. Cadenas de filtros

A menudo deben aplicarse varios filtros a un valor en un orden particular. Por ejemplo, un formulario de acceso acepta un nombre de usuario que debe contener solo caracteres alfabéticos en minúscula. Zend_Filter proporciona un método sencillo mediante el cual los filtros pueden encadenarse. El siguiente código ilustra cómo encadenar dos filtros para el nombre de usuario enviado:

// 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']);

Los filtros se ejecutan en el orden en que se añadieron a Zend_Filter. En el ejemplo anterior, primero se eliminan del nombre de usuario los caracteres no alfabéticos, y luego se convierten a minúscula los caracteres en mayúscula.

Cualquier objeto que implemente Zend_Filter_Interface puede usarse en una cadena de filtros.

35.3.1. Cambiar el orden de la cadena de filtros

Desde la versión 1.10, la cadena de Zend_Filter también admite alterar la cadena anteponiendo o añadiendo filtros. Por ejemplo, el siguiente fragmento de código hace exactamente lo mismo que el otro ejemplo de cadena de filtros del nombre de usuario:

// Create a filter chain and add filters to the chain
$filterChain = new Zend_Filter();

// this filter will be appended to the filter chain
$filterChain->appendFilter(new Zend_Filter_StringToLower());

// this filter will be prepended at the beginning of the filter chain.
$filterChain->prependFilter(new Zend_Filter_Alpha());

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