在 PHP 8.5 之前,如果要在闭包内部实现递归调用(即闭包调用自身),需要将「变量引用」绑定到闭包中的变通方法,下面是一个计算斐波那契数列的例子:
$fibonacci = function (int $n) use (&$fibonacci) {if ($n === 0) return 0;if ($n === 1) return 1;return $fibonacci($n-1) + $fibonacci($n-2);};echo $fibonacci(10). "n";
PHP 8.5 引入了 Closure::getCurrent() 方法,这个方法可以可以为闭包提供了自引用能力,允许闭包在执行过程中获取对自身的引用,从而使得递归调用变得非常简单和清晰,上面计算斐波那契数列的代码可以改成:
$fibonacci = function (int $n) {if (0 === $n || 1 === $n) {return $n;}$fn = Closure::getCurrent();return $fn($n - 1) + $fn($n - 2);};echo $fibonacci(10) . "n";
点击卡片关注「WordPress果酱」
每天分享 WordPress 使用技巧
⏬⏬ 下载 WPJAM Basic 请点击阅读原文
原文链接:https://mp.weixin.qq.com/s?__biz=MzkyMTE3Nzg2Mw==&mid=2247496461&idx=1&sn=b65fcd4c7c1079c28debe90e51d1e4ca&chksm=c070702ddbb30ffd50c3deb54e940b8d25749567676ea92abce58f46c7f5fc72b67380a38832&mpshare=1&scene=1&srcid=1213X5gQ5dBvIGCnsQBl4ek0&sharer_shareinfo=7b8779c80a131754a5b760b47a709fbe&sharer_shareinfo_first=7b8779c80a131754a5b760b47a709fbe&key=daf9bdc5abc4e8d01acd7a8e7fb24b4b65f1a5ebff4d277977a98f45a6f21e5df5eecebd35d904d5585c7d14e12ad3a3790e8ee1d844469f443a8d6d9673b1699465170db33cc8488ddb2f218dba23d91a8dd81fc5f0fdd275710a2516df80f5af2d11740d7d65373b8a87b8aaab9371ee036a8a47f03665cfa118864bddfb2d&ascene=0&uin=MjEzMTk5OTA5NA%3D%3D&devicetype=UnifiedPCWindows&version=f2541510&lang=zh_CN&exportkey=n_ChQIAhIQaB9ko5uBXF%2Fn6FaYHSgi2xLnAQIE97dBBAEAAAAAAOM6FQs%2F6kYAAAAOpnltbLcz9gKNyK89dVj0Fc0Vppp66%2FACm%2Fs%2B2V02SGsd1i6jM3fevja90VpoBJRX2L5l0I0a2r0r%2B3oVyuSLLestT9WEi9U9W7Qt1l7c29Mu5TVmrxweTuPs2i%2FImyF12Q1%2BZUAyQaZUVPEpb3krOekJdPdBkGq%2FVX6QCtxxDde5iI1D%2BN2Efz9Xng2G1KWoAPbbSU8vqTsyLO4zINH1T323AiL0vWw4r7WJbFQbaxZmmZnf%2FTrOa1B500kJE38yVM%2FuJN3sCS5RAYxZA1xJZg%3D%3D&acctmode=0&pass_ticket=5Vo%2BAvOFHaQYi11aJqTklnAFLBrsxQjttjp7xwl5hVlzS2N4k3ADcREXCR3RQRK7&wx_header=0

















暂无评论内容