dump může zobrazit název proměné

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MzK
Člen | 127
+
0
-

Jestli by nějak šlo vypsat název dumpované proměnné, protože když je jich víc, tak se v tom člověk ztrácí. $$var;

<?php
$var = 'test';
$pole = array('aa' => 'prvni', 'bb' => 'druhy');
dump($var);
dump($pole);
?>

by vypsal cca:

<?php
„var“: "test" (4)
„pole“: array(2) [
   'aa' => "prvni" (5)
   'bb' => "druhe" (5)
]
?>
Mikulas Dite
Člen | 756
+
0
-

Bohužel, ale tohle nejde. (Bez složitého parsování souboru ručně, protože ani reflexe na to nestačí.)

bojovyletoun
Člen | 667
+
0
-

asi tak, protože se vždy předává „hodnota proměnné“ (kromě &$, ale to věc neřeší).
Jedině vyzkoušet toto: (samozřejmě se to omezuje na „opravdické proměnné začinající $“, jak tímto způsobemp vydumpovat round(3.13) nebo Framework::REVISION je oříšek)

function dump2($var){
deBUg::duMP($$var,$var);
}

dump2('pole');

zbytek by šel teoreticky, že by se do funkce zamontoval eval, ale následky si radši nebudu domýšlet,..

Editoval bojovyletoun (9. 2. 2011 22:47)

MzK
Člen | 127
+
0
-

Aha, a já myslel že stačí jen $$var; http://mach13.com/…tring-in-php

<?php
function getvarname(&$var)
{
$ret = '';
$tmp = $var;
$var = md5(uniqid(rand(), TRUE));

$key = array_keys($GLOBALS);
foreach ( $key as $k )
if ( $GLOBALS[$k] === $var )
{
$ret = $k;
break;
}

$var = $tmp;
return $ret;
}

$another = 'test';
$testvar = 'test';
echo getvarname($testvar); //echoes 'testvar'
?>
Mikulas Dite
Člen | 756
+
0
-

Pokuď to opravdu v globals bude, tak to funguje. V drtivé většině dumpů to tam nebude.

redhead
Člen | 1313
+
0
-

Jako další možnost může být debug_backtrace() – zjistit soubor a řádek, kde se volala ta dump funkce a vyparsovat regulárem onen název proměnné z řádky souboru. Bude to možná o něco pomalejší, ale za to to bude fungovat 100% ve všech případech.

Ale asi bych to neviděl jako novou feature. Nevím jak ty, ale já většinou dump() používám zřídka. Jen pokud se vyskytne nějaká chyba, když ji opravím, tak dump() mažu. Na jedné stránce nemám víc jak 2–3 dumpy najednou a v nich se vyznám jednoduše.

bojovyletoun
Člen | 667
+
0
-

A stejně mi přijde přehlednější si do druhého parametru dump název napsat vlastnoručně

redhead
Člen | 1313
+
0
-

Taky v tom nevidím problém.