Hàm ẩn danh trong PHP
08 Show
09 10 11 12 13 14 15 16 17 Trong hướng dẫn này, bạn sẽ khám phá các hàm ẩn danh trong PHP. Các hàm ẩn danh là một tính năng PHP mà bạn có thể sẽ không sử dụng thường xuyên; Bạn sẽ xem xét các khái niệm sau trong hướng dẫn này
Bạn đã sẵn sàng đi sâu vào các hàm ẩn danh trong PHP chưa? Chức năng ẩn danh giải thíchNhư bạn có thể biết, bạn định nghĩa một hàm thông thường trong PHP như thế này
Khi bạn định nghĩa một hàm, bạn đặt tên cho nó ( 7 trong ví dụ trên). PHP sau đó cho phép mã của bạn tham chiếu đến chức năng này bằng tên của nó. Ví dụ: bạn có thể gọi chức năng của mình như thế này
Các hàm ẩn danh tương tự như các hàm thông thường, ở chỗ chúng chứa một khối mã được chạy khi chúng được gọi. Họ cũng có thể chấp nhận đối số và trả về giá trị Điểm khác biệt chính - như tên gọi của chúng - là các hàm ẩn danh không có tên. Đây là một ví dụ mã tạo một chức năng ẩn danh đơn giản // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); }; Có hai điểm khác biệt nhỏ nhưng quan trọng giữa ví dụ trên và định nghĩa hàm thông thường
Mặc dù đoạn mã trên hoàn toàn hợp lệ, nhưng nó không hữu ích lắm. Vì hàm ẩn danh không có tên nên bạn không thể tham chiếu nó ở bất kỳ nơi nào khác trong mã của mình, vì vậy nó không bao giờ có thể được gọi Tuy nhiên, vì một hàm ẩn danh là một biểu thức — giống như một số hoặc một chuỗi — bạn có thể thực hiện nhiều việc hữu ích khác nhau với nó. Ví dụ, bạn có thể
Bạn sẽ khám phá ba kỹ thuật này trong phần còn lại của hướng dẫn này Gán các hàm ẩn danh cho các biếnKhi bạn xác định một hàm ẩn danh, thì bạn có thể lưu trữ nó trong một biến, giống như bất kỳ giá trị nào khác. Đây là một ví dụ // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); }; Khi bạn đã hoàn thành việc đó, bạn có thể gọi hàm bằng tên của biến, giống như bạn gọi một hàm thông thường // Call the anonymous function echo $makeGreeting( "Fred", "morning" ) . " Điều này tạo ra đầu ra ________số 8Bạn thậm chí có thể lưu trữ một số chức năng bên trong một mảng, như thế này // Store 3 anonymous functions in an array $luckyDip = array( function() { echo "You got a bag of toffees!"; }, function() { echo "You got a toy car!"; }, function() { echo "You got some balloons!"; } ); Khi bạn đã hoàn thành việc đó, mã của bạn có thể quyết định gọi chức năng nào trong thời gian chạy. Ví dụ, nó có thể gọi một hàm ngẫu nhiên 0Sử dụng các chức năng ẩn danh làm cuộc gọi lạiMột cách sử dụng phổ biến của các hàm ẩn danh là tạo các hàm gọi lại nội tuyến đơn giản. Hàm gọi lại là hàm do bạn tự tạo, sau đó chuyển sang hàm khác làm đối số. Khi nó có quyền truy cập vào chức năng gọi lại của bạn, thì chức năng nhận có thể gọi nó bất cứ khi nào nó cần. Điều này cung cấp cho bạn một cách dễ dàng để tùy chỉnh hành vi của chức năng nhận Nhiều hàm PHP tích hợp chấp nhận các cuộc gọi lại và bạn cũng có thể viết các hàm chấp nhận cuộc gọi lại của riêng mình. Hãy xem xét một vài chức năng tích hợp sử dụng gọi lại và xem cách sử dụng chúng Sử dụng // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); }; 0) để chạy hàm gọi lại trên từng phần tử trong một mảngHàm // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 của PHP chấp nhận hàm gọi lại và một mảng làm đối số. Sau đó nó đi qua các phần tử trong mảng. Đối với mỗi phần tử, nó gọi hàm gọi lại của bạn với giá trị của phần tử và hàm gọi lại của bạn cần trả về giá trị mới để sử dụng cho phần tử. // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 sau đó thay thế giá trị của phần tử bằng giá trị trả về của cuộc gọi lại của bạn. Sau khi hoàn tất, // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 trả về mảng đã sửa đổi // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 hoạt động trên một bản sao của mảng mà bạn chuyển đến nó. Mảng ban đầu không bị ảnh hưởng Đây là cách bạn có thể sử dụng // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 với chức năng gọi lại thông thường 7Mã này tạo một hàm thông thường, // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };6, nhận vào một chuỗi, ________ 37, viết hoa chữ cái đầu tiên, thêm vào trước ________ 38 và trả về kết quả. Sau đó, ở dòng 8, mã chuyển hàm gọi lại này tới // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1, cùng với một mảng tên để làm việc và hiển thị kết quả 2Trong khi đoạn mã này hoạt động, sẽ hơi rườm rà khi tạo một hàm thông thường riêng biệt chỉ để hoạt động như một lệnh gọi lại đơn giản như thế này. Thay vào đó, chúng tôi có thể tạo cuộc gọi lại của mình dưới dạng một chức năng ẩn danh nội tuyến tại thời điểm chúng tôi gọi // Declare a basic anonymous function // (not much use on its own!) function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1, như sau 0Cách tiếp cận này giúp tiết kiệm một dòng mã, nhưng quan trọng hơn, nó tránh làm lộn xộn tệp PHP bằng một hàm thông thường riêng biệt chỉ được sử dụng làm lệnh gọi lại một lần Sắp xếp mảng tùy chỉnh với // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); }; 1Một cách sử dụng gọi lại phổ biến khác là với hàm // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 của PHP. Hàm này cho phép bạn sắp xếp các mảng bằng cách sử dụng hàm gọi lại sắp xếp mà bạn tự viết. Điều này đặc biệt hữu ích nếu bạn cần sắp xếp một mảng đối tượng hoặc mảng kết hợp, vì chỉ bạn, với tư cách là người viết mã, mới biết cách tốt nhất để sắp xếp các cấu trúc phức tạp như vậy Hãy tạo một mảng gồm các mảng kết hợp, trong đó mỗi mảng kết hợp có khóa // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };3 và khóa // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };4 1Bây giờ, giả sử chúng ta muốn sắp xếp mảng theo thứ tự tăng dần của tuổi. Chúng ta không thể sử dụng các hàm sắp xếp mảng thông thường của PHP, vì chúng không biết gì về khóa // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };4. Thay vào đó, chúng ta có thể gọi // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 và chuyển vào một hàm gọi lại ẩn danh để sắp xếp mảng theo độ tuổi, như thế này 2Điều này tạo ra kết quả chúng tôi muốn 3Tạo bao đóng với các chức năng ẩn danhMột cách sử dụng phổ biến khác của các hàm ẩn danh là tạo các bao đóng. Bao đóng là một hàm giữ lại quyền truy cập vào các biến trong phạm vi kèm theo của nó, ngay cả khi phạm vi đó đã biến mất Ví dụ
Khá khó hiểu, hướng dẫn sử dụng PHP đề cập đến các hàm ẩn danh như các bao đóng. Chúng không giống nhau. Các hàm ẩn danh được sử dụng để tạo các bao đóng Lúc đầu, các bao đóng có thể khó hiểu, nhưng một khi bạn nắm bắt được khái niệm này, chúng cho phép bạn viết mã rõ ràng, mạnh mẽ và linh hoạt. Hãy xem xét một vài ví dụ về đóng cửa để làm cho mọi thứ rõ ràng hơn Đóng cửa đơn giảnChúng ta sẽ bắt đầu bằng cách tạo một bao đóng rất đơn giản bằng cách sử dụng hàm ẩn danh 4Hãy xem qua mã này
Tóm lại, đó là cách bạn tạo một bao đóng trong PHP. Đó là một ví dụ tầm thường, nhưng điểm quan trọng cần lưu ý là hàm ẩn danh được trả về vẫn có thể truy cập biến cục bộ Good morning, Fred! Good afternoon, Mary!0 của hàm kèm theo, ngay cả sau khi hàm kèm theo đã chạy xong Sử dụng các bao đóng để chuyển dữ liệu bổ sung cho các cuộc gọi lạiBây giờ chúng ta đã biết cách tạo bao đóng, hãy xem cách sử dụng chúng trong thực tế phổ biến Khi bạn chuyển một hàm gọi lại cho hàm PHP // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 và // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 gọi hàm gọi lại của bạn, hàm gọi lại sẽ nhận được hai đối số được truyền cho nó bởi // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 — tức là hai giá trị trong mảng để so sánh Nhưng nếu bạn muốn chức năng gọi lại của mình nhận thêm thông tin thì sao? Tuy nhiên, // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1 — không phải chúng tôi — gọi cuộc gọi lại của chúng tôi. Vì nó được gọi trong phạm vi của // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return ( "Good $timeOfDay, $name!" ); };1, chúng tôi không có cơ hội chuyển các đối số bổ sung cho cuộc gọi lại tại thời điểm nó được gọi Đóng cửa để giải cứu. Bằng cách trả về hàm gọi lại của chúng ta từ bên trong một hàm khác và tạo một bao đóng, chúng ta có thể yêu cầu hàm bên ngoài chấp nhận 08 làm tham số, sau đó chuyển 08 cho hàm gọi lại bên trong bao đóng. Đây là mã hoàn chỉnh 5Mã này hiển thị đầu ra dự kiến 6Hãy xem qua mã này để xem nó hoạt động như thế nào
Bạn có thể sử dụng thủ thuật này bất cứ lúc nào bạn cần chuyển dữ liệu bổ sung cho hàm gọi lại Đóng cửa là một chủ đề khá rộng và tinh tế. Nếu bạn không quen thuộc với chúng, hãy xem các bài viết hay sau đây về hàm ẩn danh và bao đóng trong PHP cũng như bao đóng và hàm lambda, giải thích chi tiết chính xác bao đóng là gì (và không phải là bao đóng) Tóm lượcTrong hướng dẫn này, bạn đã xem xét các hàm ẩn danh trong PHP và xem cách sử dụng chúng trong các tình huống khác nhau. Bạn đã học
Tôi hy vọng bạn thấy hướng dẫn này hữu ích và giờ đây bạn cảm thấy tự tin khi tạo và sử dụng các hàm ẩn danh trong mã PHP của mình. Chúc vui vẻ chức năng ẩn danh giải thích với ví dụ là gì?Các hàm ẩn danh thường là các đối số được truyền cho các hàm bậc cao hơn hoặc được sử dụng để xây dựng kết quả của một hàm bậc cao hơn cần trả về một hàm. If the function is only used once, or a limited number of times, an anonymous function may be syntactically lighter than using a named function.
Chức năng nào được gọi là ẩn danh?Hàm ẩn danh là hàm không có bất kỳ tên nào được liên kết với nó . Thông thường chúng ta sử dụng từ khóa function trước tên hàm để định nghĩa một hàm trong JavaScript, tuy nhiên, trong các hàm ẩn danh trong JavaScript, chúng ta chỉ sử dụng từ khóa function mà không có tên hàm.
Lớp ẩn danh trong PHP là gì?Như tên gợi ý, lớp ẩn danh là lớp không có tên . Nó có nghĩa là để sử dụng một lần và nếu một người cần xác định một lớp một cách nhanh chóng. Tính năng của lớp ẩn danh đã được giới thiệu từ phiên bản PHP 7. Định nghĩa của lớp ẩn danh nằm bên trong một biểu thức có kết quả là một đối tượng của lớp đó.
Tại sao sử dụng chức năng ẩn danh?Ưu điểm của hàm ẩn danh là nó không phải được lưu trữ trong một tệp riêng biệt . Điều này có thể đơn giản hóa rất nhiều chương trình, vì các phép tính thường rất đơn giản và việc sử dụng các hàm ẩn danh làm giảm số lượng tệp mã cần thiết cho một chương trình. |