封閉(也稱為匿名函數)是未用名稱聲明的函數。它們是使用函數
關鍵字定義的,然後是一對參數括號(如果有)和包含功能主體的一對捲髮括號。在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>,雖然在更廣泛的意義上不像命名的功能那樣重複使用,因此可以在它們定義的同一範圍內重複使用,尤其是在特定功能中重複的範圍>將變量傳遞給關閉: <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"> &lt;?php //假設事件系統 - 用實際事件系統$ eventmanager-&gt; on('userLoggedIn','userLoggedIn',function',function($ user) ); &gt;
總而言之,關閉是PHP的多功能功能,增強代碼可讀性,靈活性,並在高級編程模式中有效使用。
以上是什麼是關閉(匿名功能),如何在PHP中使用它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!