企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
什么是回调? 与普通函数的却别就是回调函数是异步的,在 参数中匿名函数执行时,可以同时执行其他的 坏处:匿名函数不适合使用的场景之一就是调试,而闭包的显著特点之一就是匿名回调,维护起来会很吃力 好处:执行完匿名函数,存储在内存中的相关变量会被销毁,从而节省内存 匿名函数的定义 ``` $test=function(){} ``` 可以当做实参快速传递到函数中去 ``` function mathAdd($callback){ return $callback(); } $a=1; $b=2; $res=mathAdd(function()use($a,$b){ return $a+$b; }); echo $res; ``` 要有参数时 ``` function mathAdd($callback,$c){ return $callback($c); } $a=1; $b=2; $c=3; $res=mathAdd(function($cc)use($a,$b){ return $a+$b+$cc;//注意$cc就是$c,这里是为了区别形参和实参 },$c); echo $res; ``` 闭包函数也可以作为变量的值来使用。 ``` //同$greet="HelloWorld"; $greet = function($name) { return "Hello".$name; }; echo $greet('World'); ``` 作为回调函数的参数,如:preg_replace_callback回调函数 ``` echo preg_replace_callback('~-([a-z])~', function ($match) { return strtoupper($match[1]); }, 'hello-world'); // 输出 helloWorld ``` **使用use可以从父作用域继承变量** ``` $message='hello';//父作用域为全局的变量 // 返回类型在 use 子句的后面 $example = function () use ($message): string { return "hello $message"; }; echo $example(); ```