Hàm ẩn danh đệ quy PHP

Bây giờ các chức năng ẩn danh đã có sẵn kể từ PHP 5. 3, Tôi thấy mình thường xuyên sử dụng chúng. Tuy nhiên, có một điều mà tôi dường như không thể hiểu đúng là có thể tự tạo một tham chiếu hàm ẩn danh - khi làm như vậy, nó sẽ gọi chính nó theo cách đệ quy

Làm thế nào để bạn làm điều này?

$func = function [$level = 0] {
    echo str_repeat[' ', $level] . "I am on level {$level}\n";
};
$func[];
$func[1];
$func[2];
$func[3];

Điều này trở nên tẻ nhạt khi gọi đi gọi lại [có thể đặt nó trong một vòng lặp for để thực hiện cùng một việc - nhưng đây chỉ là một ví dụ đơn giản]. Vì vậy, làm thế nào để chúng tôi thực hiện điều này như một chức năng ẩn danh tự gọi nó một cách đệ quy?

  1. Đảm bảo rằng đệ quy của hàm ẩn danh bị hạn chế theo một cách nào đó. Điều này ngăn không cho chính nó được gọi theo cách đệ quy vô hạn [và do đó khiến máy chủ của bạn phải quỳ gối]
  2. Bắt đầu sử dụng từ khóa use

Giải pháp

Để hàm ẩn danh có thể gọi chính nó một cách đệ quy, chúng ta cần đảm bảo rằng nó có một tham chiếu đến chính nó để nó có thể gọi. Vì vậy, giải pháp của chúng tôi, sử dụng một bao đóng

$maximum = 5; // This can be adjusted to as many levels as necessary.
$func = function[$level = 0] use [$maximum, &$func] {
    echo str_repeat[' ', $level] . "I am on level {$level}\n";
    if [$level 

Chủ Đề