PHP içinde dış yerel değişkene erişmek mümkün mü?

3 Cevap php

Bir PHP alt fonksiyonda dış yerel varialbe erişmek mümkün mü?

Aşağıdaki kodda, ben iç işlev çubuğunda değişken $l erişmek istiyor. $l çalışmıyor barda global $l olarak bildirilmesi.

function foo()
{
    $l = "xyz";

    function bar()
    {
        echo $l;
    }
    bar();
}
foo();

3 Cevap

Bu PHP 5.2 ile mümkün olduğunu sanmıyorum ...

PHP 5.3 ile olsa da, muhtemelen sadece bunu yapmak için, bir Kapanış kullanabilirsiniz ...


Edit : took some time to remember the syntax, but here's what it would look like :

function foo()
{
    $l = "xyz";
    $bar = function () use ($l)
    {
        var_dump($l);
    };
    $bar();
}
foo();

Ve, komut dosyası çalıştıran, olsun istiyorum:

$ php temp.php
string(3) "xyz"


A couple of note :

  • Sen işlevin ilanından sonra bir ; koymak gerekir!
  • Sen ki bir & o yıllardan önce adla referans use değişkeni,: use (& $l)

Daha fazla bilgi almak için, bir referans olarak, size kılavuzunda bu sayfada bir göz atabilirsiniz: Anonymous functions

PHP 5.3 'te size use anahtar kelime kullanmanız gerekir.

$bar = function() use(&$l) {
};
$bar();

PHP 5.2 ve önceki sürümlerde bu iş olmaz. Eğer var sözdizimi genel bir işlevi bir kapatma, fakat tanım değildir.

function foo() { function bar() { } }

: aynı şekilde çalışır

function foo() { include "file_with_function_bar.php"; }

Işlevini yürütmek durumunda foo iki kez, PHP, yeniden tanımlamak (global) işlevi denedim şikayet edecektir bar.

Sadece bir çözüm iç işlevine argüman olarak değil birlikte geçen?