7.2. Theory of Operation

Zend_InputFilter consolidates a few distinct approaches to input filtering into a single API with consistent behavior and strict naming conventions (see Section 7.1, “Introduction”). These characteristics bring Zend_InputFilter on par with existing solutions, but they do nothing to further aid those who require a more structured or rigid approach. Therefore, by default, Zend_InputFilter enforces controlled access to input.

Two syntaxes are supported. In the default (strict) approach, a single argument is passed to the constructor - the array to be filtered:

<?php

$filterPost = new Zend_InputFilter($_POST);
$email = $filterPost->isEmail('email');

?>
    

Zend_InputFilter sets the array that is passed ($_POST) to NULL, so direct access is no longer possible. (The raw data is only available through the getRaw() method, which is much easier to monitor and/or avoid altogether.)

In the optional (non-strict) approach, FALSE is passed as the second argument to the constructor:

<?php

$filterPost = new Zend_InputFilter($_POST, FALSE);
$email = $filterPost->isEmail('email');

?>
    

The use of the filter is exactly the same, but Zend_InputFilter does not set the original array ($_POST) to NULL, so developers can still access it directly. This approach is discouraged in favor of the strict approach.

Zend_InputFilter is designed primarily with arrays in mind. Many sources of input are already covered by PHP's superglobal arrays ($_GET, $_POST, $_COOKIE, etc.), and arrays are a common construct used to store input from other sources. If you need to filter a scalar, see Chapter 5, Zend_Filter.