Hướng dẫn what is the use of lambda function in php? - công dụng của hàm lambda trong php là gì?

Hướng dẫn what is the use of lambda function in php? - công dụng của hàm lambda trong php là gì?

Php 5.3 bắt đầu với việc thêm các tính năng mới trong PHP thay đổi trò chơi mãi mãi trong ngôn ngữ. Đây là các chức năng/đóng tên và không gian tên Lambda. Ở đây trong hướng dẫn này, chúng tôi sẽ khám phá các chức năng Lambda và đóng cửa trong PHP với một số ví dụ thực tế.

Trong hướng dẫn này, chúng tôi sẽ xem xét chức năng Lambda & đóng với một ví dụ mã hóa để hiểu dễ dàng.

Vì vậy, vào năm 2008, một RFC (yêu cầu cho bình luận) đã được đề xuất bởi Christian Seiler, Dmitry Stogov, trong đó đề xuất rằng không cần hỗ trợ đóng cửa,

OUTPUT - 

44
4 không đủ hữu ích để thêm chúng vào PHP.

Hàm Lambda đóng một vai trò quan trọng trong việc phát triển chức năng đóng. Đầu tiên, chúng tôi sẽ hiểu về chức năng Lambda, và sau đó chúng tôi sẽ thấy mối quan hệ của nó với sự đóng cửa.

Hàm Lambda trong PHP là gì?

Hàm Lambda đã được thêm vào trong PHP 5.3 & nó là một hàm PHP ẩn danh có thể được lưu trữ trong một biến và được truyền như một đối số cho các chức năng/phương thức khác.

Ghi chú::

Hàm ẩn danh - Như tên chỉ ra, đó là một hàm được khai báo mà không có bất kỳ tên nào để gọi nó. Do đó chức năng ẩn danh thường không thể truy cập trực tiếp sau khi tạo ra.

Hàm ẩn danh cũng có thể được tìm thấy trong các ngôn ngữ khác nhau như JavaScript, Java, C#, v.v.

Trước PHP 5.3, hành vi trên là có thể sử dụng create_function (), nhưng vì chức năng này hoạt động nội bộ một & nbsp; eval () & nbsp; (đang có một số vấn đề bảo mật) và cũng có hiệu suất và sử dụng bộ nhớ xấu. Do đó, sử dụng chức năng Lambda nếu một máy chủ được cài đặt với

OUTPUT - 

44
5.
OUTPUT - 

44
5
.

Hãy để hiểu chức năng Lambda với ví dụ đơn giản -

OUTPUT - 

44

Trong ví dụ trên, chúng tôi đã xác định chức năng Lambda và gán nó cho $ thêm. Chúng ta có thể thấy rằng chức năng Lambda này không có tên. Cấu trúc đơn giản-

Chúng tôi đã xác định chức năng và chuyển hai tham số vào đó, trên đó chúng tôi sẽ thực hiện hoạt động bổ sung và sau đó chúng tôi sẽ sử dụng câu lệnh trả về để trả về giá trị kết quả đó.

Nhưng làm thế nào để gọi chức năng này? Hoặc làm thế nào hàm Lambda này sẽ nhận được giá trị và trả lại từ nơi nó được gọi? Do đó chúng tôi đã chỉ định nó cho một biến.

Sau đó, chúng tôi sử dụng biến $ thêm đó làm tên hàm và chuyển hai số nguyên làm tham số. Khi chúng tôi nhận được đầu ra thì chúng tôi chỉ in nó. Đơn giản, có phải là nó không?

Bây giờ, chúng tôi sẽ thấy, làm thế nào để vượt qua chức năng Lambda như một tham số hàm trong PHP. Hãy để sử dụng cùng một ví dụ-
Let’s use the same example-

OUTPUT - 

SUM: 44

Trong ví dụ trên, chúng tôi đã xác định hàm print_addition () và sau đó chuyển $ thêm biến (hàm lambda) làm tham số. Vì vậy, hàm Lambda đầu tiên sẽ được thực thi và sẽ trả về 44 và sau đó giá trị 44 này được truyền dưới dạng tham số cho hàm print_addition (). Điều này sẽ in đầu ra là

OUTPUT - 

44
6
OUTPUT - 

44
6

Bây giờ, chúng tôi đã học được chức năng Lambda và cú pháp của nó là gì. Bây giờ, chúng tôi sẽ tập trung vào những gì đóng cửa trong PHP và việc sử dụng nó.

Các cách sử dụng chức năng Lambda khác nhau

1. Gán chức năng Lambda/Anonymous cho một mảngAssigning Lambda/Anonymous function to an Array

Trong ví dụ trên, chúng tôi đã xác định một mảng $ mảng và chức năng Lambda được gán cho một phần tử mảng $ mảng [’bổ sung] và cuối cùng chúng tôi đã thực thi chức năng đó bằng cách sử dụng mảng và sử dụng phần tử khóa thích hợp (‘ bổ sung).

2. Truyền chức năng đóng/ẩn danh dưới dạng tham số - Way 1Passing closure/anonymous function as parameter – way 1

Trong trường hợp này, chúng tôi đã vượt qua chức năng đóng/ẩn danh được lưu trữ trong biến cho hàm cùng với các số cần thiết để thêm. Vì vậy, bên trong print_addition (), chúng tôi đã gọi chức năng Lambda và vượt qua hai tham số và nó sẽ trả về tổng.

3. Truyền chức năng đóng/ẩn danh dưới dạng tham số - Way 2Passing closure/anonymous function as parameter – way 2

Trong trường hợp này, chúng tôi đã thông qua chức năng đóng/ẩn danh trực tiếp dưới dạng tham số cho hàm cùng với các số cần thiết để thêm. Vì vậy, bên trong print_addition (), chúng tôi đã gọi chức năng Lambda và vượt qua hai tham số và nó sẽ trả về tổng.

Tại sao sử dụng chức năng Lambda trong PHP?

Các hàm Lambda rất hữu ích khi nó được yêu cầu chỉ sử dụng chức năng một lần. Về cơ bản khi chúng ta tạo một chức năng có sẵn ở phạm vi toàn cầu và để sử dụng nó một lần trong một chức năng cụ thể không có ý nghĩa gì.

Vì vậy, một cách tốt hơn là làm cho chức năng đó như một hàm Lambda và biến nó thành một phần trong chức năng/phương thức tùy chỉnh của bạn.

Đóng cửa trong PHP là gì?

Việc đóng cũng là một hàm Lambda/ẩn danh cũng có thể kế thừa các biến từ phạm vi cha. Nó có nghĩa là, nó có thể truy cập một biến được xác định bên ngoài phạm vi của nó nơi nó được xác định.

Để truy cập các biến bên ngoài bên trong hàm Lambda, chúng ta cần sử dụng sử dụng cấu trúc ngôn ngữ.

OUTPUT-

Notice: Undefined variable: message in file.php on line 7 
NULL

global variable

Trong phần đầu tiên của ví dụ, khi chúng tôi cố gắng truy cập vào biến bên ngoài $ Tên bên trong chức năng Lambda thì nó đưa ra một lỗi cho biết Thông báo: Biến không xác định: Tin nhắn. Nó có nghĩa là cố gắng truy cập biến toàn cầu bên trong chức năng Lambda là không hợp pháp. Do đó, để truy cập biến phạm vi toàn cầu bên trong hàm Lambda, đóng vào hình ảnh và điều này có thể được thực hiện bằng cách sử dụng sử dụng ngôn ngữ sử dụng ().$name inside lambda function then it gives an error saying “Notice: Undefined variable: message“. It means trying to access the global variable inside the lambda function is not legal. Hence to access the global scoped variable inside the lambda function, closure comes into the picture and this can be done using language construct use().

Vì vậy, trong phần thứ hai, chúng tôi đã vượt qua biến toàn cầu

OUTPUT - 

44
7 trong mệnh đề sử dụng của hàm Lambda và sau đó in biến.

Nhưng giả sử nếu chúng ta muốn thay đổi biến toàn cầu

OUTPUT - 

44
7 bên trong hàm Lambda và muốn có được giá trị cập nhật bên ngoài hàm. Có thể không? Và câu trả lời là có.

Trong ví dụ trên, chúng tôi vượt qua Biến $ Tên theo giá trị và để cập nhật giá trị chúng tôi cần để truyền biến bằng tham chiếu. Điều này có thể được thực hiện bằng cách sử dụng & (ampersand) trước khi biến $ name.

OUTPUT - 

44
0

Vì vậy, trong trường hợp này, bây giờ phạm vi của cả hai biến toàn cầu và chức năng trở thành toàn cầu vì cả hai biến được xác định bởi cùng một tham chiếu và chỉ vào cùng một vị trí bộ nhớ. Do đó, bất cứ khi nào biến cục bộ (chức năng Lambda bên trong), một chức năng bên ngoài cũng được thay đổi và ngược lại.

Đóng cửa đóng một vai trò quan trọng trong các khung PHP hiện đại như Symfony, Laravel, v.v.

Chúng ta có thể sử dụng đóng cửa trong PHP ở đâu?

Đóng cửa rất hữu ích trong khi sử dụng các hàm PHP chấp nhận chức năng gọi lại. PHP có một số hàm chấp nhận các cuộc gọi lại như một tham số như usort (), Array_map (), Array_walk (), Array_Filter (), Array_Reduce (), v.v.

Sử dụng usort () với đóng cửa như gọi lại-

OUTPUT - 

44
1
OUTPUT - 

44
2

Với mảng số, chúng ta có thể sử dụng hàm usort () để sắp xếp các phần tử theo thứ tự tăng dần theo mặc định nhưng nếu chúng ta có một mảng kết hợp và chúng ta muốn đặt hàng mảng dựa trên một phần tử khóa cụ thể. Chà, tại thời điểm đó, chúng ta có thể sử dụng chức năng Usort () bằng cách sử dụng hàm gọi lại.

Trong ví dụ trên, chúng tôi đã vượt qua đóng dưới dạng tham số thứ hai trong hàm usort () và sau đó so sánh từng giá trị và sắp xếp lại nó theo thứ tự tăng dần.

Sử dụng Array_map () với đóng cửa dưới dạng gọi lại-

Như tên chỉ ra, nó chủ yếu được sử dụng để thực hiện một hành động trên một mảng được cung cấp. Giống như trong ví dụ dưới đây, chúng ta đang nhân từng phần tử mảng với 2.

OUTPUT - 

44
3

Lambda và các chức năng đóng cửa trong PHP

Một điều quan trọng cần nhớ rằng, ngay cả nhóm Core cũng đã thêm chức năng này trong 5.3 nhưng việc phát hành chức năng ẩn danh 7.0 đã được giới thiệu. Với các lớp ẩn danh, PHP đã tăng một chiều cao mới trong hệ sinh thái PHP.

Sự kết luận-

Vì vậy, việc bổ sung Lambda và các chức năng đóng cửa trong PHP cung cấp một số chức năng mới và khả năng sửa đổi mã cũ để sạch hơn. Nó đã được thông qua trong nhiều khung PHP hiện đang tiên tiến. Phải mất thời gian để hiểu tầm quan trọng của nó và thực hiện nó trong mã di sản hiện tại nhưng nó tốt hơn là trễ hơn là không bao giờ.

Tại sao chúng ta cần Lambdas?

Sử dụng Lambda khi bạn cần truy cập một số dịch vụ hoặc thực hiện xử lý tùy chỉnh.Khi dữ liệu chảy qua các dịch vụ, bạn sử dụng lambdas để chạy mã tùy chỉnh trên luồng dữ liệu đó.Điều này rất hữu ích trong một đường ống Kinesis nhận dữ liệu từ những thứ như thiết bị IoT.when you need to access several services or do custom processing. As data flows through services, you use Lambdas to run custom code on that data stream. This is useful in a Kinesis Pipeline that's receiving data from things like IoT devices.

Tôi có thể chạy php trên lambda không?

Vì không có hỗ trợ gốc cho PHP trong Lambda, chúng tôi sẽ cần cung cấp nhị phân PHP để Lambda sử dụng để chúng tôi thực hiện mã thời gian chạy tùy chỉnh.there's no native support for PHP in Lambda, we'll need to provide the PHP binary for Lambda to use so that we acn execute our custom runtime code.

Tại sao chức năng Lambda lại nhanh?

Là ẩn danh, các hàm Lambda có thể dễ dàng được truyền mà không được gán cho một biến.Các hàm Lambda là các hàm nội tuyến và do đó thực hiện tương đối nhanh hơn.Lambda functions are inline functions and thus execute comparatively faster.

Chức năng của

-> trong PHP là gì?Điều này được gọi là toán tử đối tượng hoặc đôi khi là toán tử mũi tên đơn.Nó là một toán tử truy cập được sử dụng cho các phương thức và thuộc tính truy cập trong một đối tượng PHP trong lập trình hướng đối tượng (OOP).an access operator used for access/call methods and properties in a PHP object in Object-Oriented Programming (OOP).