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

  • Hàm ẩn danh PHP () sử dụng biến
    Hàm ẩn danh PHP () sử dụng biến
    Hàm ẩn danh PHP () sử dụng biến

    Hàm trong PHP. Giá trị trả về và tham số

    Hàm ẩn danh PHP () sử dụng biến
    Hàm ẩn danh PHP () sử dụng biến
    Hàm ẩn danh PHP () sử dụng biến

    Monty Shokeen

    17 Th02 2021

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 PHP

Bấ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 danh

Mộ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

9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3

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

3
31 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ến

Chú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
3
8
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

5
4
0

7
4
2

9
4
4
2
1
4
6
2
3
4
8
2
5
5
0
2
7
5
2
2
9
4
8
3
1
5
6
3
2
5
8
5
9
$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
3
3

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ốc

Trong 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

3
32. 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

3
33 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
3
32 và
3
33 với một số ví dụ

1

2
3
6
3
4
6
5
5
6
7
6

0
    return $n%5 == 0;
0

2

3
    return $n%5 == 0;
3

5
    return $n%5 == 0;
5

7
    return $n%5 == 0;
7

9
2
1

00
2
3

02
2
5

04
2
7
2
9

07
3
1

09
3
2

11
5
8
$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

28
3
3

Trong ví dụ trên, chúng tôi đã xác định các biến

3
36 và
3
37 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
3
38. 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

3
39 của mình với sự trợ giúp của từ khóa
3
32, 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
3
38. Chúng tôi cũng có thể thay đổi giá trị của toàn cầu
3
37 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

3
33. Nó sẽ giống như đoạn mã dưới đây

1

2
3
6
3
4
6
5
5
6
7
6

0
    return $n%5 == 0;
0

2

3
    return $n%5 == 0;
3

5
    return $n%5 == 0;
5

7
    return $n%5 == 0;
7

9
2
1

51
2
3

07
2
5

09
2
7

11
2
9
3
1

60
3
2
5
8

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

28
3
3

Lần này, chúng tôi đã ẩn danh chức năng đệm của mình và truy cập

3
36 và
3
37 với sự trợ giúp của từ khóa
3
33. 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

3
37 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ơn

Khi 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

3
31. 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

3
33. 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
3
33. Đâ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

88
6

0

91

2

93

3

95

5

97

7

99

9
2
01
2
1

16
2
3
2
5

6
2
7
2
08
2
9
2
10
3
1

8
3
2
2
0
5
8
2
16
$multiple_five = array_filter($numbers, function($n) {
0
2
18
$multiple_five = array_filter($numbers, function($n) {
2
2
4
$multiple_five = array_filter($numbers, function($n) {
3
2
8
$multiple_five = array_filter($numbers, function($n) {
5
2
24
$multiple_five = array_filter($numbers, function($n) {
7

8

22
2
0

23
2
16

25
2
18

27
2
34

28
2
8
2
37
2
38
2
39

8
2
41
2
0
2
43
2
2
2
45
2
4
2
47
2
6
2
49
2
8
2
51
2
08
2
53
3
0
2
55
2
56
3
3

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

3
51 để 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
3
31 mang lại cho chúng tôi bội số cho tất cả chúng

Hàm mũi tên trong PHP

Cá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

3
53 được thay thế bằng
3
54 và từ khóa
3
55 đượ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

3
33

1

2
3
$numbers = [12, 18, 5, 11, 10, 95, 3];
4
5

88
6

0

91

2
2
70

3

99

5
2
01

7

16

9
2
1

6
2
3
2
08
2
5
2
10
2
7

8
2
9
2
0
3
1
2
16
3
2
2
18
5
8
2
4
$multiple_five = array_filter($numbers, function($n) {
0
2
8
$multiple_five = array_filter($numbers, function($n) {
2
2
24
$multiple_five = array_filter($numbers, function($n) {
3

8
$multiple_five = array_filter($numbers, function($n) {
5
2
0
$multiple_five = array_filter($numbers, function($n) {
7
2
16

22
2
18

23
2
34

25
2
8

27
2
38

28

8
2
37
2
0
2
39
2
2
2
41
2
4
2
43
2
6
2
45
2
8
2
47
2
08
2
49
3
0
2
51
2
53
3
3

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

3
57 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
3
33

Suy nghĩ cuối cùng

Trong 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);