Обертывание вокруг php фильтров - PullRequest
0 голосов
/ 11 февраля 2011

Я пытаюсь создать функцию для обтекания php-фильтров:

Примерно так:

function validate($data, $args, $errorMsg)
{

}

Так что вы можете проверять данные следующим образом:

$data = array(
    'product_id'    => 'libgd<script>',
    'component'     => '10',
    'versions'      => '2.0.33',
    'testscalar'    => array('2', '23', '10', '12'),
    'testarray'     => '2',
);

$args = array(
    'product_id'   => FILTER_SANITIZE_ENCODED,
    'component'    => array('filter'    => FILTER_VALIDATE_INT,
                            'flags'     => FILTER_FORCE_ARRAY, 
                            'options'   => array('min_range' => 1, 'max_range' => 10)
                           ),
    'versions'     => FILTER_SANITIZE_ENCODED,
    'doesnotexist' => FILTER_VALIDATE_INT,
    'testscalar'   => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_REQUIRE_SCALAR,
                           ),
    'testarray'    => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_FORCE_ARRAY,
                           )

);

Однако я также хочу отображать сообщения об ошибках, если один из фильтров возвращает ложь, поэтому, например, если компоненты возвращают ложь (например, не целое число или вне диапазона), я хочу создать сообщение об ошибке, например "[поле]не целое число ".Как это будет сделано?

1 Ответ

0 голосов
/ 11 февраля 2011

Вы можете попробовать выдать исключения

http://www.php.net/manual/en/language.exceptions.php

- если есть ошибка в validate (), ошибка при использовании этого

throw new Exception('[field] is not an integer');

так что проверка будет

try(
   Validate();
)
catch (Exception $e) {
    echo 'Error: ',  $e->getMessage(), "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...