PHP Pro Tip IV: Spara undan resultat av var_dump i en sträng

Marcus Olsson,

var_dump() är PHP-utvecklarens bästa vän för att kika in i en variabel och se exakt vad den innehåller (objekt, sträng eller vad det nu är) – om man nu inte använder exempelvis Xdebug.

Men låt oss säga att man vill spara undan datan i en sträng, och inte bara dumpa ut den så fort som funktionen var_dump() körs – kanske för att undvika "Cannot modify header information - headers already sent"" – hur gör man då? Jo, som följande:

1$variable = array(
2 'value1' => 1,
3 'value2' => 2,
4 'value3' => 3
5);
6 
7// Startat "output buffer"
8ob_start();
9// Dumpar ut värdet av $variable
10var_dump($variable);
11// $result = datan i bufferten, och rensar upp
12$result = ob_get_clean();
13 
14// Gör en massa andra saker
15 
16// Eka ut datan
17echo("<pre>" . $result . "</pre>");
18 
19// Resultat
20array(3) {
21 ["value1"]=>
22 int(1)
23 ["value2"]=>
24 int(2)
25 ["value3"]=>
26 int(3)
27}
1$variable = array(
2 'value1' => 1,
3 'value2' => 2,
4 'value3' => 3
5);
6 
7// Startat "output buffer"
8ob_start();
9// Dumpar ut värdet av $variable
10var_dump($variable);
11// $result = datan i bufferten, och rensar upp
12$result = ob_get_clean();
13 
14// Gör en massa andra saker
15 
16// Eka ut datan
17echo("<pre>" . $result . "</pre>");
18 
19// Resultat
20array(3) {
21 ["value1"]=>
22 int(1)
23 ["value2"]=>
24 int(2)
25 ["value3"]=>
26 int(3)
27}

Detta ska förmodligen dock användas sparsamt då det både blir förvirrande med allt för många förekomster i koden (när man inte har koll på om output bufferten är igång eller inte etc.) samt att påverkar prestandan något. Men för att underlätta jakten på buggar – varför inte?