Lớp aws lambda php

Vừa qua mình gặp 1 vấn đề là phải dùng hàm call back để xử lý vấn đề, thế nào là tìm hiểu luôn cái lý thuyết về php closure coi nó là thế nào. trước hết là lambda tìm hiểu

Nội dung chính Hiển thị

  • Lambda là gì?
  • Hàm ẩn danh
  • Sử dụng hàm ẩn danh
  • In sao sử dụng Lambda
  • Đóng cửa là gì?
  • Sử dụng Closure trong trường hợp cụ thể
  • Kết luận

Lambda là gì?

Hàm lambda là hàm ẩn danh (hàm ẩn danh), sử dụng một lần, có thể được định nghĩa vào bất kỳ lúc nào, và thường gắn với một biến hoặc gán vào 1 hàm khác như một tham số. Các hàm này chỉ tồn tại trong phạm vi của biến mà nó đã được định nghĩa, vì vậy khi biến đó vượt ra ngoài phạm vi, thì hàm này cũng không còn nữa

Hàm ẩn danh

Một hàm ẩn danh sách đơn giản là một hàm không có tên

Ví dụ

// Hàm thường
function helloWorld()
{
  return "Hello world";
}

// Hàm ẩn danh
function ()
{
  return "Hello world";
}

Sử dụng hàm ẩn danh

Bởi vì các hàm này không có tên, chúng ta không thể gọi nó là chức năng thường xuyên. Thay vào đó ta phải gán nó vào một biến hoặc cho vào 1 hàm khác như một tham số

Ví dụ

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"

Để sử dụng các ẩn danh hàm, chúng ta gán nó vào một biến và sau đó gọi biến là một hàm như trên. Hoặc sử dụng Lambda như thế này

// Pass Lambda to function
function shout ($message)
{
  echo $message();
}

// Call function
shout(function() {
  return "Hello world";
});

In sao sử dụng Lambda

Lambdas rất hữu dụng, bởi vì chúng ta không cần phải tạo chắc chắn 1 hàm cho 1 lần sử dụng duy nhất

Thông thường, chúng ta sẽ cần một chức năng để thực hiện một công việc, nhưng nó không có nghĩa là chúng ta sẽ sử dụng nó trong phạm vi toàn cầu. Thay vì có một hàm sử dụng một lần và sau đó bỏ qua để nó ở đó, chúng ta có thể sử dụng một Lambda để thay thế

Tất nhiên, chúng ta có thể sử dụng chức năng

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
0 trong PHP. Điều này về cơ bản là giống nhau

// Use create_function
$hello = create_function('', 'echo "Hello World!";');

// Call function
$hello();

Đóng cửa là gì?

One Closure (bao đóng. -s) về cơ bản giống như một Lambda, bên ngoài nó có thể truy cập các biến bên ngoài phạm vi mà nó được tạo ra.

Ví dụ

// Create a user
$user = "Thỏ 7 màu";

// Create a Closure
$hello = function() use ($user) {
  echo "Hello $user";
};

// Greet the user
$hello(); // Returns "Hello Thỏ 7 màu"

Như chúng ta có thể thấy ở trên, Closure có thể truy cập biến

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
1. Bởi vì nó đã được khai báo trong các điều khoản sử dụng (_______12) của định nghĩa hàm đóng

Nếu chúng ta thay đổi biến

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
1 ban đầu trong Closure, nó sẽ không ảnh hưởng đến các biến ban đầu. Để cập nhật các biến ban đầu, chúng ta có thể thêm một dấu
// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
4. Một dấu
// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
4 trước một biến có nghĩa đây là một tham chiếu và vì vậy các biến ban đầu cũng được cập nhật

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
1

Closure cũng rất hữu ích khi sử dụng các hàm PHP mà chấp nhận hàm

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
6 như array_map, array_filter, array_reduce hoặc array_walk

Ví dụ

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
3

Ngoài ra, chúng ta có thể truy cập các biến bên ngoài phạm vi của Closure bằng cách sử dụng

// Hàm bình thường
echo helloWorld();
// "Hello world"

// Hàm ẩn danh
// gán cho 1 biến
$hello = function () {
  return "Hello world";
}

// gọi hàm ẩn danh
echo $hello();
// "Hello world"
7