Điều mà mình ấn tượng nhất với Laravel chính là thư viện Validate của nó. Thực sự rất sáng tạo, và khi chuyển sang 1 dự án khác không sử dụng Laravel giống như WordPress chẳng hạn, mình muốn tìm 1 thư viện Validate như thế và nó chính là GUMP.
- Github: https://github.com/Wixel/GUMP
 
GUMP là gì?
GUMP là một thư viện PHP dành cho việc xác minh, kiểm tra dữ liệu (Validate) và lọc dữ liệu (Filter). Nó là 1 thư viện mã nguồn mở được phát triển từ năm 2013.
Cài đặt GUMP vào dự án PHP
chúng ta sử dụng composer để cài GUMP
composer require wixel/gump
Hướng dẫn sử dụng GUMP
Các bạn tham khảo đoạn code hoàn chỉnh sau:
$gump = new GUMP();
// set validation rules
$gump->validation_rules([
    'username'    => 'required|alpha_numeric|max_len,100|min_len,6',
    'password'    => 'required|max_len,100|min_len,6',
    'email'       => 'required|valid_email',
    'gender'      => 'required|exact_len,1|contains,m;f',
    'credit_card' => 'required|valid_cc'
]);
// set field-rule specific error messages
$gump->set_fields_error_messages([
    'username'      => ['required' => 'Fill the Username field please, its required.'],
    'credit_card'   => ['extension' => 'Please enter a valid credit card.']
]);
// set filter rules
$gump->filter_rules([
    'username' => 'trim|sanitize_string',
    'password' => 'trim',
    'email'    => 'trim|sanitize_email',
    'gender'   => 'trim',
    'bio'      => 'noise_words'
]);
// on success: returns array with same input structure, but after filters have run
// on error: returns false
$valid_data = $gump->run($_POST);
if ($gump->errors()) {
    var_dump($gump->get_readable_errors()); // ['Field <span class="gump-field">Somefield</span> is required.'] 
    // or
    var_dump($gump->get_errors_array()); // ['field' => 'Field Somefield is required']
} else {
    var_dump($valid_data);
}
Các rule vui lòng tham khảo ở link: https://github.com/Wixel/GUMP
Ngoài ra các bạn có thể dễ dàng mở rộng để validate các yêu cầu khác.
/**
 * You would call it like 'equals_string,someString'
 *
 * @param string $field  Field name
 * @param array  $input  Whole input data
 * @param array  $params Rule parameters. This is usually empty array by default if rule does not have parameters.
 * @param mixed  $value  Value.
 *                       In case of an array ['value1', 'value2'] would return one single value.
 *                       If you want to get the array itself use $input[$field].
 *
 * @return bool   true or false whether the validation was successful or not
 */
GUMP::add_validator("equals_string", function($field, array $input, array $params, $value) {
    return $value === $params;
}, 'Field {field} does not equal to {param}.');
/**
 * @param string $value Value
 * @param array  $param Filter parameters (optional)
 *
 * @return mixed  result of filtered value
 */
GUMP::add_filter("upper", function($value, array $params = []) {
    return strtoupper($value);
});
Nguồn: vinasupport.com