封闭(也称为匿名函数)是未用名称声明的函数。它们是使用函数
关键字定义的,然后是一对参数括号(如果有)和包含功能主体的一对卷发括号。在PHP中,关闭特别功能,因为即使在周围的范围完成后,它们也可以从周围的范围访问变量。这被称为变量上的闭合。
这是一个简单的示例:
<pre class="brush:php;toolbar:false"> <code class="“" php>&lt;?php $ message =&quote =&quort; $ clocure = function()use($ sagese){echo $消息; }; $ CLASURE(); //输出:外面你好! ?&gt; </code>
在此示例中, $ closure
是关闭。它访问变量 $ Message
,该变量是在关闭范围之外定义的。 使用($消息)
关键字至关重要;它明确地说明了从父范围的“捕获” $消息
变量的闭合。如果没有使用($消息)
,PHP会丢弃错误,因为 $ Message
在封闭范围内无法提供。
您还可以将参数传递给关闭:
<pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <code class php>&lt;? 。 $名称。 “!&quot; }; $ entry(“世界”; //输出:你好,世界! ?这对于仅使用一次的回调或小型助手功能特别有用。 <li> <strong>词汇封闭:</strong>从周围范围(词汇范围)访问变量的能力是一个关键好处。这允许创建保持状态的功能而无需诉诸于全局变量,从而导致更清洁,更可维护的代码。</li> <li> <strong>灵活性:</strong>封闭可以轻松地作为参数传递给其他功能,使其非常适合高级函数(将其他功能作为参数或返回函数作为其他功能或返回功能)。这可以在Php。</li> <li> <strong>代码可重复使用(在有限的上下文中)中的功能编程范例(在有限的上下文中):</strong>虽然在更广泛的意义上不像命名函数那样可重复使用,但可以在它们定义的同一范围内重复使用,在定义的同一范围内,特别适用于在特定函数中对重复任务有用。 php? <p> <strong>将变量传递给关闭:</strong> </p> <p>变量被传递给通过函数定义中的参数列表封闭,就像常规函数一样。对于周围范围的变量,您使用<code>使用</code>关键字,然后使用括号中包含的变量列表。您可以按值(默认值)或使用<code>&amp; </code>在<code> <code>使用</code></code></p> </li></code>
<pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <code class="“" php>&lt;?php $ x = 10; $ CLASURE =功能($ y)使用($ x){返回$ x $ y; };回声$封闭(5); //输出:15 $ CLOSUREBYREF = function(&amp; $ z)使用(&amp; $ x){$ x = 20; $ z = $ x * 2; }; $ W = 5; $ cloturebyref($ w); echo $ x; //输出:20 Echo $ W; //输出:40?&gt; </code>
从封闭中传递变量:
您可以使用 return> return
语句从闭合返回值,就像常规函数一样。然后可以将返回的值分配给闭合外的变量。
<code class="“" php>&lt;?php $ closure = function = function($ a,$ b){返回$ a * $ b; }; $ result = $关闭(4,5); // $结果将为20 Echo $结果; ?&gt; </code>
是的,封闭经常与高级功能一起使用,例如回调和php中的事件处理。它们非常适合这些方案,因为它们具有灵活性和简洁的语法。
回调:可以通过回调对期望可呼出的参数的函数进行回音。例如,诸如 array_map
, array_filter
和 usort
之类的数组函数经常以回调为“处理阵列元素”。
<pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <code class="“" php>&lt;? $ squaredNumbers = array_map(function($ n){返回$ n * $ n;},$ numbess); print_r($ squaredNumbers); //输出:数组([0] =&gt; 1 [1] =&gt; 4 [2] =&gt; 9 [3] =&gt; 16 [4] =&gt; 25)?事件发生时,执行相应的闭合。这允许脱钩和模块化代码。例如,在假设事件系统中: <pre class="brush:php;toolbar:false"> <code class="“" php>&lt;?php //假设事件系统 - 替换为您的实际事件系统$ eventManager-&gt; on('userLoggedIn','userLoggedIn',function',function($ user){//在echo中使用echo in echo in echo in echo; in。&quot;}); &gt; </code>
总而言之,关闭是PHP的多功能功能,增强代码可读性,灵活性,并在高级编程模式中有效使用。
以上是什么是关闭(匿名功能),如何在PHP中使用它们?的详细内容。更多信息请关注PHP中文网其他相关文章!