Các thành phần xác thực của Laravel cung cấp năng lượng cho gói Transformer PHP, gói này sử dụng cú pháp giống như xác thực quen thuộc của Laravel để chuyển đổi dữ liệu bằng cách sử dụng các hàm, lớp có thể gọi được, v.v.
_10Các quy tắc biến áp dựa trên chuỗi sẽ rõ ràng đối với những người quen thuộc với API xác thực của Laravel. Ngoài ra, như đã thấy trong đoạn trích, gói này có cú pháp "có thể xâu chuỗi" [
2] có thể xâu chuỗi các cuộc gọi bổ sung trên một phần dữ liệuCode language: PHP [php]
$data = santize[$_POST, $fields];
Gói này hỗ trợ dữ liệu mảng lồng nhau bằng ký hiệu dấu chấm, đầu vào ký tự đại diện [áp dụng hàm trên các khóa khớp với mẫu ký tự đại diện], bao đóng, lớp triển khai giao diện
3 được cung cấp, v.v.Code language: PHP [php]
$data = santize[$_POST, $fields];
Trên GitHub, bạn có thể xem mã nguồn, nhận hướng dẫn cài đặt chi tiết và tìm hiểu thêm về gói này
Transformer là gói PHP để khử trùng và định dạng dữ liệu được cung cấp bởi các thành phần xác thực của Laravel. Gói này sử dụng cú pháp giống như xác thực Laravel quen thuộc để chuyển đổi dữ liệu bằng cách sử dụng các hàm, lớp có thể gọi được, v.v.
1use Closure;
2
3// example available functions at runtime:
4function to_carbon[$value]
5{
6 return new Carbon\Carbon[$value];
7}
8
9function only_numbers[$value]
10{
11 return preg_replace["/[^0-9]/",'',$value];
12}
13
14$input = [
15 'first_name' => ' jim ',
16 'last_name' => ' thompson',
17 'phone_number' => '123-456-7890',
18 'date_of_birth' => "1991-05-01",
19];
20
21[new DataTransformer[$input, [
22 'first_name' => 'trim|ucfirst',
23 'last_name' => 'trim|ucfirst',
24 'phone_number' => 'only_numbers',
25 'date_of_birth' => 'to_carbon|->format:m/d/y',
26]]]->transform[];
27
28// Returns:
29// [
30// "first_name" => "Jim",
31// "last_name" => "Thompson",
32// "phone_number" => "1234567890",
33// "date_of_birth" => "05/01/91",
34// ]
Những người quen thuộc với API xác thực của Laravel sẽ nhận thấy các quy tắc biến áp dựa trên chuỗi. Ngoài ra, như đã thấy trong đoạn trích, gói này có cú pháp "có thể xâu chuỗi" [
2] có thể xâu chuỗi các cuộc gọi bổ sung trên một phần dữ liệuCode language: PHP [php]
$data = santize[$_POST, $fields];
Bạn cũng có thể chuyển đổi dữ liệu bằng cách sử dụng các bao đóng hoặc một lớp triển khai giao diện
3 được cung cấp. Ngoài ra, gói này hỗ trợ dữ liệu mảng lồng nhau bằng cách sử dụng ký hiệu dấu chấm, đầu vào ký tự đại diện [áp dụng các chức năng trên các phím khớp với mẫu ký tự đại diện], v.v.Code language: PHP [php]
$data = santize[$_POST, $fields];
Bạn có thể tìm hiểu thêm về gói này, nhận hướng dẫn cài đặt đầy đủ và xem mã nguồn trên GitHub
Transformer là gói PHP để khử trùng và định dạng dữ liệu được cung cấp bởi các thành phần xác thực của Laravel
Bài viết Sanitize and Format Data in PHP with the Transformer Package appeared first on Laravel News
Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách phát triển một hàm PHP
9 có thể tái sử dụng để làm sạch đầu vàoCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Giới thiệu về vệ sinh đầu vào
Trước khi xử lý dữ liệu từ các nguồn không đáng tin cậy, chẳng hạn như yêu cầu HTTP
0 hoặcCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
1, bạn phải luôn khử trùng dữ liệu đó trướcCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Làm sạch đầu vào có nghĩa là xóa các ký tự không hợp lệ bằng các kỹ thuật xóa, thay thế, mã hóa hoặc thoát
PHP cung cấp một danh sách các bộ lọc làm sạch mà bạn có thể sử dụng để làm sạch đầu vào một cách hiệu quả. Các chức năng sau sử dụng các bộ lọc này để khử trùng đầu vào
- bộ lọc_input[]
- bộ lọc_var[]
- filter_input_array[]
- filter_var_array[]
Trong hướng dẫn này, chúng ta sẽ tạo một hàm
9 có thể tái sử dụng để làm sạch các đầu vào theo cách biểu cảm hơnCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Định nghĩa hàm sanitize[]
Giả sử bạn có các trường sau trong biến
3 và muốn làm sạch chúngCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
- Tên
- tuổi tác
- trọng lượng
- trang chủ
Để làm điều đó, bạn có thể định nghĩa một hàm
9 và gọi nó như sauCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Code language: PHP [php]
$data = santize[$_POST, $fields];
Hàm
9 sẽ trông như thế nàyCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Hàm có hai tham số
- Tham số
6 là một mảng kết hợp. Nó có thể là
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
3,
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
8 hoặc một mảng kết hợp thông thường
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
- Tham số
9 là một mảng chỉ định danh sách các trường có quy tắc
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Hàm
9 trả về một mảng chứa dữ liệu đã được làm sạchCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
The
9 phải là một mảng kết hợp trong đó khóa là tên trường và giá trị là quy tắc cho trường đó. Ví dụCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Lưu ý rằng
72 có nghĩa là một chuỗi các chuỗiCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Để vệ sinh các lĩnh vực này
- Đầu tiên, lặp lại
9 và sử dụng bộ lọc tương ứng cho từng. Ví dụ: nếu quy tắc là
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
74, bộ lọc sẽ là
Code language: PHP [php]function sanitize[array $inputs, array $fields] : array
75
Code language: PHP [php]function sanitize[array $inputs, array $fields] : array
- Thứ hai, vệ sinh trường bằng bộ lọc
Để có bộ lọc dựa trên quy tắc của một trường, bạn có thể xác định ánh xạ giữa các quy tắc với các bộ lọc như thế này
7Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Ví dụ: phần sau trả về bộ lọc của quy tắc
74Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
3Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Để dọn dẹp nhiều trường cùng một lúc, bạn có thể sử dụng hàm
77Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
5Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Tham số đầu tiên của hàm
77 là một mảng các biến để lọc. Và tham số thứ hai là một mảng các bộ lọc. Ví dụ, nó sẽ trông như thế nàyCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
7Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Vì vậy, bạn cần trả về
79 này từ các mảngCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
9 vàCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
31. Để làm điều đó, bạn có thể sử dụng chức năngCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
32 như thế nàyCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
2Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Sau đây là chức năng
9Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
4Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Làm cho hàm sanitize[] linh hoạt hơn
Hàm
9 sử dụng hằng sốCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
31. Để linh hoạt hơn, bạn có thể thêm một tham số và đặt giá trị mặc định của nó thành hằng sốCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
31 như thế nàyCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
8Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Ngoài ra, bạn có thể muốn làm sạch các trường trong
6 bằng cách sử dụng một bộ lọc e. g. ,Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
75Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Để làm điều đó, bạn có thể
- Đầu tiên, đặt tham số
9 là tùy chọn và đặt giá trị mặc định của nó thành một mảng trống$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
50
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
- Thứ hai, thêm tham số bộ lọc mặc định
- Thứ ba, nếu mảng
51 trống, hãy sử dụng bộ lọc mặc định
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Hàm
9 sẽ giống như sauCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
0Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Xóa khoảng trắng của chuỗi
Để xóa khoảng trắng của chuỗi, bạn sử dụng hàm
53. Và để loại bỏ các khoảng trắng của một mảng chuỗi các bạn sử dụng hàmCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
32 với hàmCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
53Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
1Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Tuy nhiên,
6 có thể chứa các mục không phải là chuỗi. Để chỉ cắt mục chuỗi, bạn có thể sử dụng hàmCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
57 để kiểm tra xem mục đó có phải là chuỗi hay không trước khi cắt mục đóCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
2Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
6 có thể chứa một mục là một mảng các chuỗi. Ví dụCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
3Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Để cắt chuỗi trong mục
59, bạn cần sử dụng hàm đệ quyCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
4Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Gọi array_trim[] từ hàm sanitize[]
Để gọi hàm
70 từ hàmCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
9Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
- Đầu tiên, thêm một tham số mới có tên là
72 vào hàm
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
9 và đặt giá trị mặc định của nó thành true
Code language: PHP [php]function sanitize[array $inputs, array $fields] : array
- Thứ hai, gọi
70 nếu tham số $trim là true
Code language: PHP [php]$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
Phần sau đây hiển thị hàm
9 được cập nhậtCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
5Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Đặt nó tất cả cùng nhau
Phần sau hiển thị tệp
76 hoàn chỉnh với các hàmCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
31,Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
70 vàCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
9Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
6Code language: PHP [php]
function sanitize[array $inputs, array $fields] : array
Sử dụng chức năng sanitize[]
Phần sau đây trình bày cách sử dụng hàm
9 để làm sạch dữ liệu trongCode language: PHP [php]
function sanitize[array $inputs, array $fields] : array
21 bằng cách sử dụng các quy tắc làm sạch được chỉ định trongCode language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];
9Code language: PHP [php]
$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];