Hàm ẩn danh PHP () sử dụng biến
Tôi đã trình bày những điều cơ bản về các hàm trong PHP trong hướng dẫn trước. Mặc dù PHP có rất nhiều hàm dựng sẵn, nhưng nó cũng cho chúng ta lựa chọn để xác định các hàm của riêng mình. Có nhiều cách khác nhau để định nghĩa các hàm riêng của chúng ta trong PHP Show
Hướng dẫn này sẽ dạy cho bạn về các tính năng và cách sử dụng các hàm ẩn danh trong PHP. Bạn cũng sẽ tìm hiểu về cú pháp hàm mũi tên mới hơn trong PHP Hàm ẩn danh trong PHPBất cứ khi nào chúng ta định nghĩa một hàm trong PHP, chúng ta cũng thường cung cấp tên cho nó. Tên này được sử dụng để gọi hàm sau này bất cứ khi nào chúng ta cần. Tuy nhiên, một chức năng đôi khi chỉ được yêu cầu ở một nơi và không nơi nào khác. Giả sử bạn đang thực hiện một dự án lớn yêu cầu bạn viết khoảng 50 hàm như vậy trở lên Trong những trường hợp như vậy, việc đặt định nghĩa hàm ở nơi cần thiết sẽ dễ dàng hơn nhiều mà không phải lo lắng về việc đặt tên cho hàm. Các loại chức năng này được gọi là chức năng ẩn danh. Chúng đặc biệt hữu ích khi bạn xử lý các hàm chỉ dài từ 4 đến 5 dòng. Thực hiện các cuộc gọi lại với các chức năng ẩn danhMột trong những cách sử dụng phổ biến nhất của các chức năng ẩn danh là gọi lại. Các hàm gọi lại được gọi bởi hàm chính để thực hiện một tác vụ dựa trên logic bạn cung cấp. Chúng ta có thể sử dụng cả hàm tích hợp và hàm do người dùng xác định làm hàm gọi lại. Dưới đây là một ví dụ về các chức năng như vậy 1
2 3 $numbers = [12, 18, 5, 11, 10, 95, 3]; 4 5 $multiple_five = array_filter($numbers, function($n) { 6 return $n%5 == 0;
0
1
2
3
4
5
6
7
8
920 21 22 23 24 25 26 27 28 29 30 31 32 33 Trong đoạn mã trên, chúng ta chỉ cần trả về bội số của năm từ một dãy số đã cho. Tham số thứ hai của 331 là chức năng gọi lại của chúng tôi. Như bạn có thể thấy, nó thực hiện nhiệm vụ đơn giản là kiểm tra xem một số có chia hết cho năm không. Nếu không có các hàm ẩn danh, chúng ta sẽ phải xác định hàm này ở một nơi khác và nghĩ ra một cái tên không đụng hàng Gán các hàm ẩn danh cho các biếnChúng ta thường gán tên cho bất kỳ chức năng nào mà chúng ta xác định trong PHP. Tên này được sử dụng để gọi hàm sau này, bất cứ khi nào cần. Tuy nhiên, các hàm ẩn danh không có bất kỳ tên nào. Điều này có thể khiến chúng tôi khó gọi cho họ sau này nếu có nhu cầu Một tính năng thú vị của các hàm ẩn danh là chúng ta có thể gán chúng cho các biến hoặc lưu trữ chúng bên trong các mảng số hoặc mảng kết hợp. Sau đó, chúng ta chỉ có thể gọi các hàm này bằng tên biến. Đây là một ví dụ 1
2 3 38 4 $numbers = [12, 18, 5, 11, 10, 95, 3];0 5 $numbers = [12, 18, 5, 11, 10, 95, 3];2 6
0
2$numbers = [12, 18, 5, 11, 10, 95, 3];6
3$numbers = [12, 18, 5, 11, 10, 95, 3];8
540
742
944 21 46 23 48 25 50 27 52 29 48 31 56 32 58 59 $multiple_five = array_filter($numbers, function($n) {0 $multiple_five = array_filter($numbers, function($n) {1 $multiple_five = array_filter($numbers, function($n) {2 $multiple_five = array_filter($numbers, function($n) {3 $multiple_five = array_filter($numbers, function($n) {4 $multiple_five = array_filter($numbers, function($n) {5 $multiple_five = array_filter($numbers, function($n) {6 $multiple_five = array_filter($numbers, function($n) {7 33 Như bạn có thể thấy trong đoạn mã trên, các hàm ẩn danh này có thể được gán cho các biến và được gọi giống như các hàm thông thường Các hàm ẩn danh có thể kế thừa các biến từ phạm vi gốcTrong một trong những bài viết trước của chúng tôi có tên là Tìm hiểu phạm vi biến trong PHP, chúng tôi đã đề cập chi tiết về phạm vi biến. Về cơ bản, PHP có phạm vi toàn cầu và phạm vi cấp chức năng. Bạn không thể truy cập các biến được định nghĩa ở một nơi khác bên trong hàm của mình. Tương tự, các biến được xác định bên trong một hàm sẽ không thể truy cập được bên ngoài nó Một cách để truy cập các biến bên ngoài bên trong một hàm là sử dụng từ khóa 332. Tuy nhiên, cách tiếp cận này có một số nhược điểm vì nó có thể khiến việc bảo trì mã khó khăn hơn trong thời gian dài. PHP cũng có một từ khóa đặc biệt 333 cho phép bạn truy cập các biến từ phạm vi cha bên trong một hàm ẩn danh. Hãy hiểu sự khác biệt giữa 332 và 333 với một số ví dụ 1
2 3 63 4 65 5 67 6
0return $n%5 == 0;0
2
3return $n%5 == 0;3
5return $n%5 == 0;5
7return $n%5 == 0;7
921
0023
0225
0427 29
0731
0932
1158 $multiple_five = array_filter($numbers, function($n) {0
14$multiple_five = array_filter($numbers, function($n) {2
16$multiple_five = array_filter($numbers, function($n) {3 $multiple_five = array_filter($numbers, function($n) {5
19$multiple_five = array_filter($numbers, function($n) {7
21
22
23
24
25
26
27
2833 Trong ví dụ trên, chúng tôi đã xác định các biến 336 và 337 hai lần. Chúng là một phần của phạm vi toàn cầu khi được xác định ở trên cùng. Chúng tôi xác định lại hai biến đó bên trong hàm 338. Tuy nhiên, chúng không liên quan đến các biến được xác định trong phạm vi toàn cầu vì các hàm có phạm vi riêng trong PHP Khi chúng tôi sử dụng các biến này bên trong hàm 339 của mình với sự trợ giúp của từ khóa 332, chúng tôi thực sự đang truy cập các giá trị toàn cầu. Điều này là rõ ràng từ đầu ra của 338. Chúng tôi cũng có thể thay đổi giá trị của toàn cầu 337 bên trong chức năng của chúng tôi Chúng ta có thể viết lại đoạn mã trên để sử dụng các hàm ẩn danh và từ khóa 333. Nó sẽ giống như đoạn mã dưới đây 1
2 3 63 4 65 5 67 6
0return $n%5 == 0;0
2
3return $n%5 == 0;3
5return $n%5 == 0;5
7return $n%5 == 0;7
921
5123
0725
0927
1129 31
6032 58
63$multiple_five = array_filter($numbers, function($n) {0
65$multiple_five = array_filter($numbers, function($n) {2
16$multiple_five = array_filter($numbers, function($n) {3 $multiple_five = array_filter($numbers, function($n) {5
19$multiple_five = array_filter($numbers, function($n) {7
72
22
23
24
25
77
27
2833 Lần này, chúng tôi đã ẩn danh chức năng đệm của mình và truy cập 336 và 337 với sự trợ giúp của từ khóa 333. Giá trị của các biến này được lấy từ phạm vi cha. Việc xóa các biến khỏi phạm vi cha sẽ khiến bạn gặp lỗi về các biến không xác định Cũng lưu ý rằng hàm ẩn danh thực sự hoạt động với các bản sao của biến trong phạm vi cha. Đó là lý do tại sao giá trị của 337 không thay đổi bên ngoài chức năng ẩn danh Bạn có thể chuyển các biến này theo tham chiếu nếu bạn muốn những thay đổi đó được phản ánh bên ngoài hàm Làm cho các chức năng gọi lại ẩn danh trở nên linh hoạt hơnKhi bắt đầu hướng dẫn này, chúng ta đã biết rằng các hàm ẩn danh thường được sử dụng làm hàm gọi lại. Điều này đã được chứng minh bằng hàm 331. Trong ví dụ đó, chúng tôi đã lọc ra tất cả các số trong mảng không phải là bội số của 5. 5 này đã được mã hóa cứng vào chức năng gọi lại Điều gì sẽ xảy ra nếu chúng ta muốn làm cho chức năng bộ lọc của mình linh hoạt hơn để nó có thể lọc ra các số không phải là bội số của một số giá trị khác như 8 hoặc 10? Thật không may, hàm gọi lại yêu cầu một số tham số cụ thể (trong trường hợp này là một tham số). Do đó, việc truyền hai tham số sẽ gây ra lỗi. Chúng ta có thể khắc phục hạn chế này với sự trợ giúp của từ khóa 333. Như chúng ta đã thấy trong phần trước, các hàm ẩn danh có thể kế thừa các biến từ phạm vi cha với từ khóa 333. Đây là phiên bản sửa đổi của cuộc gọi lại của chúng tôi dựa trên thực tế này 1
2 3 $numbers = [12, 18, 5, 11, 10, 95, 3]; 4 5
886
0
91
2
93
3
95
5
97
7
99
9201 21
1623 25
627 208 29 210 31
832 20 58 216 $multiple_five = array_filter($numbers, function($n) {0 218 $multiple_five = array_filter($numbers, function($n) {2 24 $multiple_five = array_filter($numbers, function($n) {3 28 $multiple_five = array_filter($numbers, function($n) {5 224 $multiple_five = array_filter($numbers, function($n) {7
8
2220
23216
25218
27234
2828 237 238 239
8241 20 243 22 245 24 247 26 249 28 251 208 253 30 255 256 33 Chúng tôi tạo một mảng gồm nhiều yếu tố có bội số mà chúng tôi muốn lọc. Sau đó, chúng tôi sử dụng vòng lặp 351 để lặp lại các yếu tố. Mỗi yếu tố được chuyển đến chức năng gọi lại cho 331 mang lại cho chúng tôi bội số cho tất cả chúng Hàm mũi tên trong PHPCác hàm mũi tên về cơ bản là một cách ngắn hơn để viết các hàm ẩn danh đơn giản. Chúng được giới thiệu trong PHP 7. 4. Từ khóa 353 được thay thế bằng 354 và từ khóa 355 được lược bỏ hoàn toàn khi xác định hàm mũi tên. Chúng chỉ chứa một biểu thức và biểu thức đó là giá trị trả về của hàm mũi tên Một tính năng nữa của hàm mũi tên là các biến được xác định trong phạm vi cha hoàn toàn có sẵn cho chúng mà không cần thêm từ khóa 333 1
2 3 $numbers = [12, 18, 5, 11, 10, 95, 3]; 4 5
886
0
91
2270
3
99
5201
7
16
921
623 208 25 210 27
829 20 31 216 32 218 58 24 $multiple_five = array_filter($numbers, function($n) {0 28 $multiple_five = array_filter($numbers, function($n) {2 224 $multiple_five = array_filter($numbers, function($n) {3
8$multiple_five = array_filter($numbers, function($n) {5 20 $multiple_five = array_filter($numbers, function($n) {7 216
22218
23234
2528
27238
28
8237 20 239 22 241 24 243 26 245 28 247 208 249 30 251 253 33 Chạy mã này xuất ra các giá trị giống như đoạn mã trước đó. Như tôi đã đề cập trước đó, biến 357 có sẵn cho hàm mũi tên của chúng ta mà không cần thêm từ khóa 333 Suy nghĩ cuối cùngTrong hướng dẫn này, chúng tôi đã đề cập đến một số tính năng và cách sử dụng các hàm ẩn danh trong PHP. Điều này bao gồm những thứ như sử dụng chúng để gọi lại hoặc gán chúng cho các biến để gọi lại sau. Chúng tôi cũng đã học cách chúng tôi có thể truy cập các biến được xác định trong phạm vi cha bên trong các hàm ẩn danh. Sau đó, chúng tôi đã sử dụng tính năng này để tạo các chức năng gọi lại hữu ích hơn Chúng ta cũng biết rằng các hàm ẩn danh đơn giản có thể được viết một cách ngắn gọn hơn bằng cách sử dụng cú pháp hàm mũi tên Bạn có thể gán hàm ẩn danh cho một biến không?Không thể truy cập hàm ẩn danh trong javascript sau khi tạo lần đầu. Do đó, chúng ta cần gán nó cho một biến , để sau này chúng ta có thể sử dụng giá trị của nó. Chúng luôn được gọi (được gọi) bằng cách sử dụng tên biến. Ngoài ra, chúng tôi tạo các hàm ẩn danh trong JavaScript, nơi chúng tôi muốn sử dụng các hàm làm giá trị.
Các chức năng ẩn danh có thể được lưu trữ trong các biến không?Hàm ẩn danh là gì? . Các hàm ẩn danh có thể chấp nhận nhiều đầu vào và trả về một đầu ra. Chúng chỉ có thể chứa một câu lệnh thực thi duy nhất. not stored in a program file, but is associated with a variable whose data type is function_handle . Anonymous functions can accept multiple inputs and return one output. They can contain only a single executable statement.
Làm cách nào để sử dụng một biến hàm trong một hàm khác trong PHP?tiếng vang $a->b;
Làm cách nào để sử dụng chức năng ẩn danh trong PHP?Hàm ẩn danh, còn được gọi là bao đóng, cho phép tạo các hàm không có tên cụ thể. Chúng hữu ích nhất với vai trò là giá trị của các tham số có thể gọi được, nhưng chúng cũng có nhiều cách sử dụng khác. Các hàm ẩn danh được triển khai bằng lớp Đóng. printf("Xin chao %s\r\n", $name); |