PHP 巢狀函數:仔細觀察
PHP 中的巢狀函數與JavaScript 中的閉包有相似之處,但它們在PHP 中具有不同的用途程式語言。
在巢狀的 PHP 函數中,內部函數是在外部函數中定義的。內部函數可以存取外部函數的作用域,包括其變數和參數。
PHP 巢狀函數主要用於建立私有方法或匿名函數。私有方法只能在定義它們的類別中存取。
讓我們考慮以下範例:
<code class="php">function outer($msg) { function inner($msg) { echo 'inner: '.$msg.' '; } echo 'outer: '.$msg.' '; inner($msg); } inner('test1'); // Fatal error: Call to undefined function inner() outer('test2'); // outer: test2 inner: test2 inner('test3'); // inner: test3 outer('test4'); // Fatal error: Cannot redeclare inner()</code>
在此範例中,內部函數只能從外部函數內部呼叫函數。直接呼叫它(例如,inner('test1'))會導致致命錯誤。
PHP 5.3 引入了匿名函數,提供了更多類似 JavaScript 的行為:
<code class="php">function outer() { $inner = function() { echo "test\n"; }; $inner(); } outer(); outer(); inner(); // PHP Fatal error: Call to undefined function inner() $inner(); // PHP Fatal error: Function name must be a string</code>
此程式碼建立外部函數內的匿名函數 ($inner)。匿名函數可以從外部函數內部調用,但不能直接存取或調用。
以上是PHP中巢狀函數的應用和限制有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!