GUMP – Thư viện Validate mạnh của PHP giống với Laravel


Đ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.

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

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web