PHP değişken adını almak nasıl?

6 Cevap

func($name1) dönmelidir name1

Bu mümkün mü?

6 Cevap

İşte öyle bir fonksiyon.

function var_name (&$iVar, &$aDefinedVars)
{
    foreach ($aDefinedVars as $k=>$v)
        $aDefinedVars_0[$k] = $v;

    $iVarSave = $iVar;
    $iVar     =!$iVar;

    $aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));
    $iVar      = $iVarSave;

    return $aDiffKeys[0];
}

Bu gibi diyoruz

$test = "blah";
echo var_name($test,  get_defined_vars());

Yani "test" yazdıracaktır.

Ben aslında bu işlevi over here de (get_defined_vars tarafından döndürülen dizi yineleme bunu yapabilirsiniz) bulundu. Olduğunu anlamak için biraz daha kolay olabilir.

Hayır, PHP bir değişkenin adını almak için hiçbir yolu yoktur.

Bir işlevi çağırırken, bu işlev yalnızca değişkenin içeriğini alacak ve "değişken kendisi" değil - bir işlev anlamına geçildi değişkenin adını bulamıyorum.

Hayır.

İyi Fikir? Hayır

Herhangi usecase Eğer should bunu nereye yapılacak? Hayır

Kavramının kanıtı? Tabii!

<?php

a($test);


function a($x) {
    $trace = debug_backtrace();
    $file = file($trace[0]['file']);
    $line = $file[$trace[0]['line']-1];

    var_dump($line); // Prints "a($test);" Do the Stringparsing and your done

}

Evet, bu SourceFile okuyarak "kolay" alır, o da oradan php opcodes ve iş userland erişim sağlar "bytekit" adlı bir php uzantısı kullanılarak yapılabilir.

Hayır.

Bir işlevi tanımlarken bu işlev kapsam içinde olması için, yerel bir değişken adı belirtin. PHP fonksiyonunu uygun değeri geçecek, ancak sembol kapsamında artık.

Ancak, alternatif olarak "variable variables" kullanarak içine bakmak olabilir.

Açıkçası, is olası çılgın yeterince yüksek değerler için.

The comments on this page include several techniques: http://php.net/manual/en/language.variables.php

lucas dot karisny at linuxmail dot org's answer works on my machine: http://www.php.net/manual/en/language.variables.php#49997

YMMV.