[BUG] Debug::consoleDump a dumpování objektu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
_Martin_
Generous Backer | 679
+
0
-

Pokud na různých místech aplikace dumpuji do konzole instanci jednoho objektu, ve všech dumpech bude objekt v tom stavu, v jakém byl při posledním dumpu. Ukázka:

$instance = new SomeClass;
Debug::consoleDump($instance);

$instance->property = 'value';
Debug::consoleDump($instance);

$instance->property = 'anything else';
Debug::consoleDump($instance);

Příklad vypíše třikrát „anything else“. Šlo by to opravit?

Ondřej Mirtes
Člen | 1536
+
0
-

Asi je to kvůli tomu, že se to vyvolává (a zobrazuje) až po ukončení aplikace, tudíž to 3× vidí anything else.

Jan Tvrdík
Nette guru | 2595
+
0
-

Tenhle bug jsem chtěl taky hlásit (celkem dávno), akorát teď nevím, jestli jsem na to zapomněl nebo zjistil, že to není potřeba. Lze řešit přidáním

if (is_object($var)) $var = clone $var; // neřeší deep clone

Editoval Jan Tvrdík (19. 10. 2009 20:01)

jasir
Člen | 746
+
0
-

Jan Tvrdík napsal(a):

Tenhle bug jsem chtěl taky hlásit (celkem dávno), akorát teď nevím, jestli jsem na to zapomněl nebo zjistil, že to není potřeba. Lze řešit přidáním

if (is_object($var)) $var = clone $var; // neřeší deep clone

Nebude fungovat na FormContainer (a potomky).

_Martin_
Generous Backer | 679
+
0
-

jasir napsal(a):

Nebude fungovat na FormContainer (a potomky).

Právě – proto by to chtělo jiné řešení, třeba vydumpovat si objekt hned do nějaké dočasné proměnné.

Patrik Votoček
Člen | 2221
+
0
-

JJ přesně tohle mě teď v metru napadlo že místo toho aby se do dočasné proměné dával celý objekt tak by možná šlo dávat tam rovnou dump.

David Grudl
Nette Core | 8228
+
0
-

fixed