print_r()-vervanger

Door - -, 13 jaar geleden, 4.206x bekeken

Omdat ik er ziek van werd dat print_r geen handige functies heeft (automatisch pre-tags outputten, in- en uitklappen van arrays of objecten, echte waardes bij bools en nulls) hier maar een eigen knutsel.

Het is snel gemaakt en het werkt, maar heel netjes is de code niet. Het is meer om even snel wat te bekijken.

Eigenschappen:
- Binnen multidimensionale arrays bepaalde arrays in- en uitklappen. Zo ook met functies.
- Aangeven hoeveel levels standaard uitgeklapt moeten staan.
- Weergave van het aantal childs als een level ingeklapt is.
- Highlighting van arrays of objecten d.m.v. een mouseover,
- Echte waardes: print_r() geeft bij bools een 1 of 0, deze functie geeft netjes true of false. Zo ook met nulls: print_r() geeft dan niks terug, deze functie null.
- Werkt meerdere keren op één pagina.
- CSS en JavaScript wordt automatisch één keer neergezet. Plaats je dus meerdere keren een dump van een array op één pagina, dan zal er niet opnieuw CSS en JavaScript geplaatst worden.
- Getest en werkend bevonden in Chrome, Firefox 3 en Internet Explorer 7.
- Niet valid: style- en script-tags mogen niet in de body staan, waardoor dit niet valid is. Als je zelf de style- en script-tags eruit sloopt en in je head zet, is alles helemaal valid.

Parameters:
bool print_array ( array $array [, int $levelsOpen=null [, int $identifier=0 [, int $level=0 [, int &$i = 0]]]] )
$array is de array die je wilt printen.
$levelsOpen is het aantal levels diep die automatisch openstaan. Geef geen waarde mee of een null om alle levels open te zetten.
$level, $identifier en $i zijn niet nodig om zelf te gebruiken.

Voorbeeld: http://phphulp.jonathanhogervorst.com/print_array.php

Gesponsorde koppelingen

PHP script bestanden

  1. printrvervanger

 

Er zijn 19 reacties op 'Printrvervanger'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Kumkwat Trender
Kumkwat Trender
13 jaar geleden
 
0 +1 -0 -1
ziet er goed uit ;)
- -
- -
13 jaar geleden
 
0 +1 -0 -1
@Peter: Dankje :-)
Terence Hersbach
Terence Hersbach
13 jaar geleden
 
0 +1 -0 -1
daarvoor heb je ook nog een andere functie: var_dump.. deze heb je dus zo'n beetje herschreven.. alleen is die nog geavanceerder behalve dat hier uitschuifdingen bij zitten
- -
- -
13 jaar geleden
 
0 +1 -0 -1
@Terence: Ik ken var_dump, alleen vind ik die output niet zo overzichtelijk.
Storeman storeman
storeman storeman
13 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Concrete class for generating debug dumps related to the output source.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


class Zend_Debug
{

    /**
     * @var string
     */

    protected static $_sapi = null;

    /**
     * Get the current value of the debug output environment.
     * This defaults to the value of PHP_SAPI.
     *
     * @return string;
     */

    public static function getSapi()
    {

        if (self::$_sapi === null) {
            self::$_sapi = PHP_SAPI;
        }

        return self::$_sapi;
    }


    /**
     * Set the debug ouput environment.
     * Setting a value of null causes Zend_Debug to use PHP_SAPI.
     *
     * @param string $sapi
     * @return void;
     */

    public static function setSapi($sapi)
    {

        self::$_sapi = $sapi;
    }


    /**
     * Debug helper function.  This is a wrapper for var_dump() that adds
     * the <pre /> tags, cleans up newlines and indents, and runs
     * htmlentities() before output.
     *
     * @param  mixed  $var   The variable to dump.
     * @param  string $label OPTIONAL Label to prepend to output.
     * @param  bool   $echo  OPTIONAL Echo output if true.
     * @return string
     */

    public static function dump($var, $label=null, $echo=true)
    {

        // format the label
        $label = ($label===null) ? '' : rtrim($label) . ' ';

        // var_dump the variable into a buffer and keep the output
        ob_start();
        var_dump($var);
        $output = ob_get_clean();

        // neaten the newlines and indents
        $output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output);
        if (self::getSapi() == 'cli') {
            $output = PHP_EOL . $label
                    . PHP_EOL . $output
                    . PHP_EOL;
        }
else {
            if(!extension_loaded('xdebug')) {
                $output = htmlspecialchars($output, ENT_QUOTES);
            }


            $output = '<pre>'
                    . $label
                    . $output
                    . '</pre>';
        }


        if ($echo) {
            echo($output);
        }

        return $output;
    }

}
[
/code]

Uit ZF, wellicht net zo handig...

Gebruik:
[
code]
[
code]<?php
Zend_Debug::dump( $myVar|$myObject|!IetsAnders );
[
/code]
Ed
Ed
13 jaar geleden
 
0 +1 -0 -1
Slordige code , aangezien je de functie recursief gebruikt zou je static variables moeten gebruiken. Zodat je geen identifiers moet meegeven, of levels. En al helemaal geen teller.

Verder biedt dit script natuurlijk niks extra's ten aanzien van var dump, wat ik zie biedt var dump een betere ondersteuning om objecten te outputten.

Verder is het gebruik van zulke lange regels code wel heel fout, aangezien je daar snel fouten creëerd
Onbekend Onbekend
Onbekend Onbekend
13 jaar geleden
 
0 +1 -0 -1
@Terence: daarbij is het ook makkelijk dat het type van een var wordt gegeven, bijv int, string, etc..
- -
- -
13 jaar geleden
 
0 +1 -0 -1
@storeman: Ja, dat kan ook, maar ik denk dat dit voor beginners zeker wat makkelijker is.

@Danny: Op zich heb je wel gelijk, ik ga misschien een keer de code herschrijven.

@Tommy: Kan je/ik hier ook wel inbouwen.
GaMer B
GaMer B
13 jaar geleden
 
0 +1 -0 -1
Wat je nu moet doen is alles wat je wilt zien eerst in een array stoppen. Dan vind ik die dump functie van storeman toch wel wat beter. Daar kun je direct een object in de dump gooien en niet eerst in een array.
Ed
Ed
13 jaar geleden
 
0 +1 -0 -1
@GaMer13:
gewoon print_array(array($obj));
Boris Mattijssen
Boris Mattijssen
13 jaar geleden
 
0 +1 -0 -1
Ik vind het een erg handige fuctie!
Ik ga hem zeker gebruikern, erg handig met die kleurtjes, en dat in/uitklappen. !
Citroen Anoniem Graag
Citroen Anoniem Graag
13 jaar geleden
 
0 +1 -0 -1
Het zou mooier zijn als je iets kon doen met func_get_args. Dan hoef je het niet eerst in een array te gooien!

maar verder vind ik var_dump veel handiger
- -
- -
13 jaar geleden
 
0 +1 -0 -1
@GaMer13: Oops, daar heb ik niet over nagedacht... Ik ga het binnenkort verbeteren.

@Danny: Kan inderdaad (nu tijdelijk).

@brie: Dankje :)

@Citroen: Ja, dat kan inderdaad mooier zijn. Ga ik ook wel even naar kijken.
Iltar van der berg
iltar van der berg
13 jaar geleden
 
0 +1 -0 -1
En je objecten dan? ik gebruik print_r meestal voor objecten... (nouja, er zitten gewoon vaak objecten in mijn print_r)
Richard van Velzen
Richard van Velzen
13 jaar geleden
 
0 +1 -0 -1
Gooi daar eens $GLOBALS in, en zie je script doodgaan...
Marco
Marco
13 jaar geleden
 
0 +1 -0 -1
Dit kan net zo makkelijk met

echo '<pre>'; print_r($variable); echo '</pre>';

echo '<pre>'; var_dump($variable); echo '</pre>';
Jan geen
Jan geen
13 jaar geleden
 
0 +1 -0 -1
Of nog iets mooier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>'.print_r($var, true).'</pre>';
?>
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Richard van Velzen
Richard van Velzen
13 jaar geleden
 
0 +1 -0 -1
Of mooier, de methode van Zend Framework gebruiken. Ik heb hem zelf weliswaar nog wat aangepast, maar hij voldoet beter dan print_r. ;)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. printrvervanger

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.