Dump by měl být otevírán v editory stejně jako chyby

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

Vždy když někam napíšu nějaký dump tak ho pak chci smazat. Hodilo by se kdyby když kliknu na dump v HTML výstupu tak že by se otevřel v editoru stejně jako soubor v debugeru.

jansfabik
Člen | 193
+
0
-

Nevím, jestli je to úplně možné. Na dumpování používám globální funkci d(), takže by mě to odkazovalo do ní.

David Grudl
Nette Core | 7565
+
0
-

Jsem pro.

Filip Procházka
Moderator | 4668
+
0
-

Jak by to fungovalo?

pawouk
Člen | 172
+
0
-

HosipLan: Klikneš na dump a ten se otevře ve tvém editoru :-)
jansfabik: A proč by to nešlo? Jediné co k tomu potřebuješ je cesta ka souboru a číslo řádku a to už za nás udělal David. Takže stačí přidat do souboru Debugger na řádek 600 toto:

$output = '<a style="text-decoration: none;" href="editor://open/?file='.$trace[$i]['file'].'&line='.$trace[$i]['line'].'">'.$output.'</a>';

Editoval pawouk (23. 9. 2012 15:10)

jansfabik
Člen | 193
+
0
-

pawouk: Při ladění používám takovéto funkce:

function d($val) { foreach (func_get_args() as $arg) Debugger::dump($arg); return $val; }
function bd($val) { foreach (func_get_args() as $arg) Debugger::barDump($arg); return $val; }
function de($val) { foreach (func_get_args() as $arg) Debugger::dump($arg); exit; }

Ten problém je v tom, že já bych chtěl, aby mě to odkázalo do místa, kde volám funkci d() (nikoliv Debugger::dump()), abych to pak mohl snadno smazat.

pawouk
Člen | 172
+
0
-

Ale vždyť to tam volá! Jen jsou použity již zjištěné data. Co ti píše výstup když najedeš myší na ten dump?

jansfabik
Člen | 193
+
0
-

Aktuální dev-master mi po najetí zobrazí

dump($arg) in file /var/www/localhost/sandbox/app/misc/functions.php on line 10,

což je přesně to, co nechci.

pawouk
Člen | 172
+
0
-

No jasně. Když si nadefinuješ vlastní funce, tak to nefunguje. Pokud bys nechal dump který definuje samo nette v shortcuts.php tak ti to bude fungovat (i s tím odkazm do zdrojáku). To bys ale musel používat ve svém kódu dump() což ti asi přijde moc dlouhé :-D

Problém je ten, že dump funguje přes debug_backtrace a tam celkem hraje roli kde definuješ ty funce. Prasácká metoda je otevřít si manuálně Debugger a na řádek 591 přidat navýšení:

$i = Helpers::findTrace($trace, 'dump') ? 1 : 0;
$i++;

u tebe možná i o dva podle toho co píšeš. Samořejmě lepší možnost je celý debugger podědit, zkopírovat si onu metodu a tam to změnit abys mohl svobodně aktualizovat na další nette. Měl jsem stejný problém když jsem si vytvořil vlastní shortcut firelog() tam je to obdobné.

Editoval pawouk (23. 9. 2012 16:56)

jansfabik
Člen | 193
+
0
-

Ano, to se snažím celou dobu vysvětlit :-) Bylo by fajn, kdybych mohl Nette nějakým způsobem říct, že tohle je dumpovací funkce, třeba nějakou PHP-doc anotací.

Editoval jansfabik (23. 9. 2012 17:11)

Filip Procházka
Moderator | 4668
+
0
-

Já myslel že se bavíte o datech ;) Klikací dumpy zní fajn.

pekelnik
Člen | 462
+
0
-

+1

David Grudl
Nette Core | 7565
+
0
-

Zkoušeli jste nastavit Debugger::$showLocation = TRUE? To právě zobrazuje klikací odkaz do editoru.