Heim >Backend-Entwicklung >PHP-Tutorial >Können in PHP verschachtelte Funktionen außerhalb ihres umschließenden Bereichs aufgerufen werden?

Können in PHP verschachtelte Funktionen außerhalb ihres umschließenden Bereichs aufgerufen werden?

DDD
DDDOriginal
2024-10-29 01:05:29587Durchsuche

Can PHP Nested Functions Be Called Outside Their Enclosing Scope?

Verschachtelte PHP-Funktionen: Zweck und Verwendung

Im Bereich PHP führen verschachtelte Funktionen ein Element der Codekapselung und -organisation ein. Obwohl sie möglicherweise nicht so allgegenwärtig sind wie ihre JavaScript-Gegenstücke, finden verschachtelte PHP-Funktionen in bestimmten Szenarien ihre Nische.

Betrachten Sie dieses Beispiel:

<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>

Wie Sie beobachten können, wenn Sie es versuchen Wenn Sie die Funktion inner() direkt außerhalb der Funktion OUTER() aufrufen, führt dies zu einem schwerwiegenden Fehler, da sie auf den Bereich der Funktion OUTER() beschränkt ist. Dieses Verhalten steht im Einklang mit dem Konzept des lexikalischen Bereichs, bei dem eine verschachtelte Funktion den Bereich ihrer umschließenden Funktion erbt und nicht von außerhalb dieses Bereichs aufgerufen werden kann.

Wenn Sie mit PHP 5.3 oder höher arbeiten, können Sie dies nutzen anonyme Funktionen, um ein JavaScript-ähnlicheres Verhalten zu erreichen:

<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>

Ausgabe:

test
test

In diesem Beispiel ist die anonyme Funktion $inner innerhalb der Funktion „outer()“ definiert und hat Zugriff auf seinen Anwendungsbereich. Es bleibt jedoch auf diesen Bereich beschränkt und kann nicht direkt aus dem globalen Bereich aufgerufen werden.

Das obige ist der detaillierte Inhalt vonKönnen in PHP verschachtelte Funktionen außerhalb ihres umschließenden Bereichs aufgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn