Chức năng ẩn danh giải thích với ví dụ trong php là gì?

Nhận toàn quyền truy cập vào Lập trình PHP, Phiên bản thứ 3 và hơn 60 nghìn đầu sách khác, với bản dùng thử miễn phí 10 ngày của O'Reilly

Ngoài ra còn có các sự kiện trực tuyến trực tiếp, nội dung tương tác, tài liệu chuẩn bị chứng nhận, v.v.

Bản tóm tắt. trong hướng dẫn này, bạn sẽ tìm hiểu về các hàm ẩn danh PHP và cách sử dụng chúng một cách hiệu quả

Giới thiệu về hàm ẩn danh

Khi bạn định nghĩa một hàm, bạn chỉ định tên cho nó. Sau này, bạn có thể gọi hàm theo tên của nó

Ví dụ, để xác định một hàm nhân hai số, bạn có thể làm như sau

function multiply($x, $y) { return $x * $y; }

Code language: HTML, XML (xml)

Hàm

multiply(10, 20);

Code language: HTML, XML (xml)
5 nhận hai đối số và trả về kết quả. Để gọi hàm

multiply(10, 20);

Code language: HTML, XML (xml)
5, bạn truyền các đối số cho nó như thế này

multiply(10, 20);

Code language: HTML, XML (xml)

Trong ví dụ này,

multiply(10, 20);

Code language: HTML, XML (xml)
5 là một hàm được đặt tên. Và bạn có thể tái sử dụng bao nhiêu lần tùy thích

Bên cạnh các hàm được đặt tên, PHP cho phép bạn định nghĩa các hàm ẩn danh

Hàm ẩn danh là một hàm không có tên

Ví dụ sau định nghĩa một hàm ẩn danh nhân hai số

function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)

Vì hàm không có tên nên bạn cần kết thúc nó bằng dấu chấm phẩy (

multiply(10, 20);

Code language: HTML, XML (xml)
8) vì PHP coi nó như một biểu thức

Chức năng ẩn danh này hoàn toàn không hữu ích vì bạn không thể sử dụng nó như một chức năng được đặt tên

Để sử dụng một hàm ẩn danh, bạn cần gán nó cho một biến và gọi hàm thông qua biến đó

Ví dụ sau gán hàm ẩn danh cho biến

multiply(10, 20);

Code language: HTML, XML (xml)
9

________số 8

Và điều này gọi hàm ẩn danh thông qua biến

multiply(10, 20);

Code language: HTML, XML (xml)
9

multiply(10, 20);

Code language: HTML, XML (xml)
0

Khi bạn kết xuất thông tin của biến

multiply(10, 20);

Code language: HTML, XML (xml)
9, bạn sẽ thấy rằng nó thực sự là một đối tượng

function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
2

multiply(10, 20);

Code language: HTML, XML (xml)
3

Lưu ý rằng

function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
3 trong PHP không giống với đóng trong các ngôn ngữ lập trình khác như JavaScript hoặc Python

Vì một hàm ẩn danh là một đối tượng, bạn có thể gán nó cho một biến, chuyển nó cho một hàm và trả về nó từ một hàm

Truyền một chức năng ẩn danh cho một chức năng khác

PHP có nhiều hàm dựng sẵn chấp nhận hàm gọi lại, ví dụ: hàm

function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
4

Hàm

function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
5 chấp nhận hàm gọi lại và một mảng. Nó áp dụng hàm gọi lại cho từng phần tử và bao gồm các kết quả trong một mảng mới

Ví dụ sau đây cho thấy cách nhân đôi mỗi số trong một mảng

multiply(10, 20);

Code language: HTML, XML (xml)
7

Làm thế nào nó hoạt động

  • Đầu tiên, xác định một hàm có tên là

    function ($x, $y) { return $x * $y; };

    Code language: HTML, XML (xml)
    6 để nhân đôi một số
  • Thứ hai, xác định một mảng các số nguyên
  • Thứ ba, gọi hàm

    function ($x, $y) { return $x * $y; };

    Code language: HTML, XML (xml)
    5 để nhân đôi từng phần tử của mảng

    function ($x, $y) { return $x * $y; };

    Code language: HTML, XML (xml)
    8
  • Cuối cùng, hiển thị mảng kết quả

đầu ra

multiply(10, 20);

Code language: HTML, XML (xml)
1

Ví dụ này hoạt động hoàn toàn tốt. Tuy nhiên, nó khá dài dòng. Và chức năng

function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
6 có thể được sử dụng một lần

Ví dụ sau thực hiện tương tự nhưng thay vào đó sử dụng một hàm ẩn danh

multiply(10, 20);

Code language: HTML, XML (xml)
3

Phạm vi của chức năng ẩn danh

Theo mặc định, một hàm ẩn danh không thể truy cập các biến từ phạm vi cha của nó. Ví dụ

multiply(10, 20);

Code language: HTML, XML (xml)
4

PHP đã đưa ra thông báo sau

multiply(10, 20);

Code language: HTML, XML (xml)
0

Trong ví dụ này, hàm ẩn danh cố gắng truy cập biến

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
0 từ phạm vi cha của nó. Tuy nhiên, nó không thể. Vì vậy, PHP đã đưa ra một thông báo

Để sử dụng các biến từ phạm vi cha bên trong một hàm ẩn danh, bạn đặt các biến trong cấu trúc

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
1 như sau

multiply(10, 20);

Code language: HTML, XML (xml)
1

Bây giờ, nó sẽ hoạt động chính xác

Lưu ý rằng

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
0 được chuyển đến hàm ẩn danh theo giá trị, không theo tham chiếu. Nếu bạn thay đổi nó bên trong chức năng ẩn danh, thay đổi sẽ không phản ánh bên ngoài chức năng. Ví dụ

multiply(10, 20);

Code language: HTML, XML (xml)
2

Trong ví dụ này, bên trong hàm ẩn danh, giá trị của

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
0 là

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
4. Tuy nhiên, bên ngoài chức năng ẩn danh, giá trị của tin nhắn vẫn giữ nguyên là

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
5

Nếu bạn muốn truyền một biến cho một hàm ẩn danh bằng cách tham chiếu, bạn cần sử dụng toán tử

// ... $multiply = function ($x, $y) { return $x * $y; };

Code language: HTML, XML (xml)
6 như ví dụ sau

Chức năng ẩn danh trong PHP với ví dụ là gì?

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. Ví dụ #1 Ví dụ về hàm ẩn danh.

Chức năng ẩn danh cũng đưa ra một ví dụ về mã là gì?

Hàm ẩn danh là hàm được khai báo mà không có bất kỳ định danh được đặt tên nào để tham chiếu đến nó . Do đó, một chức năng ẩn danh thường không thể truy cập được sau khi tạo lần đầu. Định nghĩa chức năng bình thường. function hello() { alert('Xin chào thế giới');

Điều gì định nghĩa một chức năng ẩn danh?

Hàm ẩn danh là hàm không được lưu trữ trong tệp chương trình, nhưng được liên kết với một biến có kiểu dữ liệu là function_handle . 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.

Chức năng ẩn danh và được đặt tên là gì?

TL;DR Các hàm được đặt tên hữu ích để mang lại trải nghiệm gỡ lỗi tốt, trong khi các hàm ẩn danh cung cấp phạm vi ngữ cảnh để phát triển dễ dàng hơn . Các hàm mũi tên chỉ nên được sử dụng khi các hàm hoạt động như dữ liệu.