Stop... (hammertime)

 En passant, je vous laisse une ridicule et minuscule petite fonction d'arrêt pour php... 

Il sera clair pour tout le monde que j'ai passé beaaaaauuuucoup plus de temps sur l'image d'en-tête que sur ce code, mais comme je m'en sers très souvent pour débugger sans insaller de grosses lib, ben je vous la file au cas où...


 

    function aff($a,$stop=true){echo 'Arret a la ligne '.__LINE__.' du fichier '.__FILE__.'<pre>';var_dump($a);if ($stop){exit();}}

Et on l'appelle en lui fournissant la variable/le tableau dont on veut récupérer la valeur...

Si vous voyez des améliorations simples à ajouter, commentez et je mettrai à jour

[EDIT du 1er Mai] :  Par défaut, la fonction fait un arrêt mais j'ai ajouté la possibilité de retourner une variable sans stopper l'exécution: il suffit de préciser aff($var,false).

(Mais si vous voulez me bourriner le code, ne vous privez pas de commenter également )

 

 

Donc, ça-y-est, on en est parvenu à la récup de fonds de tiroirs, à la distribution de n'importe quoi, à la publication de crottes de nez ?
Sans déc' tu pourrais arrêter le tir ?

 

 

 

 

 

Ah, ben t'es là toi ? Puisque t'es arrivé jusqu'ici, tu pourrais décéder, s'il te plaît ? 

Je te filerais bien un coup de main, mais ton hygiène corporelle aurait plutôt tendance à m'en dissuader...

 

❝ 13 commentaires ❞

1  Knah Tsaeb le

J'utilise aussi une function de debug, elle n'est pas tous à fait la même puisque je n’arrête pas le script, mais bon ça peut servir à d'autre.


<?php
/**



  • Améliore la sortie print



  • @author Tatane http://www.tatane.info/index.php/print_rn

  • @author http://www.blog.cactuscrew.com/77-print_rn.html

  • @param $data (array) tableau ou variable à examiner

  • @param $name (string) nom a afficher

  • @return false affiche les clef valeur du tableau $data

  • @example n_print($array, 'Tableau de valeur');
    */
    function n_print($data, $name = '') {
    $aBackTrace = debug_backtrace();
    echo '<h2>', $name, '</h2>';
    echo '<fieldset style="border: 1px solid orange; padding: 5px;color: #333; background-color: #fff;">';
    echo '<legend style="border:1px solid orange;padding: 1px;background-color:#eee;color:orange;">', basename($aBackTrace[0]['file']), ' ligne => ', $aBackTrace[0]['line'], '</legend>';
    echo '<pre>', htmlentities(print_r($data, 1)), '</pre>';
    echo '</fieldset><br />';
    }
    ?>
    http://shaarlet.knah-tsaeb.org/?HsF04A

 
2  Bronco le

Ha oui, vachement utile cette fonction !
Je vais me l'ajouter dans mon SnippetVamp de suite...
Merci beaucoup ! (et pour le flux rss de ton shaarli aussi )

 
3  JeromeJ le

J'ai "mieux" : Vous voulez vous battre ? >(


<img class='smile' src='http://warriordudimanche.net/vrac/warriorsmiles/mdr.jpg&#039; alt='smiley' title=' ou '/> Elle est ptet pas parfaite mais elle est jolie et tout et tout.


(Vérifier quand même le code hein, c'est un vieux machin, il est ptet pas 100% safe <img class='smile' src='http://warriordudimanche.net/vrac/warriorsmiles/satisfait.jpg&#039; alt='smiley' title=' ou '/> hihi)


C'est un ptit fork d'une fonction que j'ai trouvé sur le net y a des années <img class='smile' src='http://warriordudimanche.net/vrac/warriorsmiles/satisfait.jpg&#039; alt='smiley' title=' ou '/>' (sur le site du zero je crois !)


function explain($var, $html = false, $return = false, $sub = 0)
{

if($sub == 0) $r = '<pre style="border: 1px solid #e3af43; background-color: #f8edd5; padding: 10px; overflow: auto;">';
else $r = '';


$type = htmlentities(gettype($var));
if($type == &#039;NULL&#039;) $r .= &#039;&lt;em style=&quot;color: #0000a0; font-weight: bold;&quot;&gt;NULL&lt;/em&gt;&#039;;
else if($type == &#039;boolean&#039;)
{
if($var) $r .= &#039;&lt;span style=&quot;color: #327333; font-weight: bold;&quot;&gt;TRUE&lt;/span&gt;&#039;;
else $r .= &#039;&lt;span style=&quot;color: #327333; font-weight: bold;&quot;&gt;FALSE&lt;/span&gt;&#039;;
}
else if($type == &#039;integer&#039;) $r .= &#039;&lt;span style=&quot;color: red; font-weight: bold;&quot;&gt;&#039;.$var.&#039;&lt;/span&gt;&#039;;
else if($type == &#039;double&#039;) $r .= &#039;&lt;span style=&quot;color: #e8008d; font-weight: bold;&quot;&gt;&#039;.$var.&#039;&lt;/span&gt;&#039;;
else if($type == &#039;string&#039;) $r .= &#039;&lt;span style=&quot;color: #e84a00;&quot;&gt;\&#039;&#039;.($html ? $var:htmlentities($var)).&#039;\&#039;&lt;/span&gt;&#039;;
else if($type == &#039;array&#039;)
{
$r .= &#039;Tableau(&#039;.count($var).&#039;)&#039;.&quot;\r\n&quot;.str_repeat(&quot;\t&quot;, $sub).&#039;{&#039;.&quot;\r\n&quot;;

foreach($var AS $k =&gt; $e) $r .= str_repeat(&quot;\t&quot;, $sub+1).&#039;[&#039;.explain($k, $html, true, $sub+1).&#039;] =&amp;gt; &#039;.($k === &#039;GLOBALS&#039; ? &#039;* RECURSION *&#039;:explain($e, $html, true, $sub+1, $var)).&quot;\r\n&quot;;

$r .= str_repeat(&quot;\t&quot;, $sub).&#039;}&#039;;
}
else if($type == &#039;object&#039;)
{
$r .= &#039;Objet «&lt;strong&gt;&#039;.htmlentities(get_class($var)).&#039;&lt;/strong&gt;»&#039;.&quot;\r\n&quot;.str_repeat(&quot;\t&quot;, $sub).&#039;{&#039;.&quot;\r\n&quot;;
$prop = get_object_vars($var);
foreach($prop AS $name =&gt; $val)
{
if($name == &#039;privates_variables&#039;) # Hack (PS: il existe des biblio interne permettant d&#039;étudier une classe)
{
for($i = 0, $count = count($var-&gt;privates_variables); $i &lt; $count; $i++) $r .= str_repeat(&quot;\t&quot;, $sub+1).&#039;&lt;strong&gt;&#039;.htmlentities($get = $var-&gt;privates_variables[$i]).&#039;&lt;/strong&gt; =&amp;gt; &#039;.explain($var-&gt;$get, $html, true, $sub+1).&quot;\r\n&quot;;
continue;
}

$r .= str_repeat(&quot;\t&quot;, $sub+1).&#039;&lt;strong&gt;&#039;.htmlentities($name).&#039;&lt;/strong&gt; =&amp;gt; &#039;.explain($val, $html, true, $sub+1).&quot;\r\n&quot;;
}
$r .= str_repeat(&quot;\t&quot;, $sub).&#039;}&#039;;
}
else $r .= &#039;Variable de type &lt;strong&gt;&#039;.$type.&#039;&lt;/strong&gt;.&#039;;

if($sub == 0) $r .= &#039;&lt;/pre&gt;&#039;;

if($return) return $r;
else echo $r;

}

 
4  JeromeJ le

J'ai fais tout buggué ou c'est pas moi ? :p

 
5  Bronco le

@JJ: L'erreur de débutant: c'est pas pluxml qui buggue, c toi
pour les smiles, ya des codes à taper et ils sont accessibles par le curseur de souris, via la balise title... inutile de taper toute la balise img (htmlentities oblige )


 
6  JeromeJ le

@Bronco, tu crois vraiment que je me suis amusé à écrire les balises images moi-même ?


Non, non, d'ailleurs si tu regardes les images affichées après src=" elles ne sont pas redimensionnées :o


Sinon j'ai un bogue graphique sous Firefox (j'ai pas vérif avec un autre navigateur) : ton code highlighter fait 100% de largeur mais est situé à côté de l'image d'entête (et non au dessus) du coup il dépasse sur le menu de droite :o


Cordialement l'ami :p

 
7  Bronco le

Argh !


http://images.warriordudimanche.net/fu.jpg

 
8  JerryWham le

Merci pour ces snippets.


@JeromeJ : Pas mal comme fonction. Elle pourrait être encore améliorée en remplaçant les if else par un switch.


@Bronco : Toute la page bugue. Le premier pre fermant de ton exemple de code ferme avant la div du code. Et le commentaire de JeromeJ est étrange...

 
9  JeromeJ le

@JerryWham :p Mais je HAIS les switch D'ailleurs j'en utilise jamais du coup, je les BOYCOTTE :)


Pis d'façon c'est pas mon code à la base je l'ai juste adapté et amélioré :)
Fin si ça peut faire plaisir le partage, tant mieux !!


À propos de la page, Bronco va bientôt avoir un surmenage :p j'ai presque jamais vu un truc faire tant de choses et on lui en rajoute :D ahaha Tiens le coup l'ami (Bronco) ! Et oublie pas de te reposer de temps à autres hein


See ya buddies!

 
10  Bronco le

@JerryWham: et hop, encore un bug de réparé merci


@JJ: c'est vrai que j'en fait pas mal, mais là, je bosse surtout sur SnippetVamp (sur mon temps libre *mort )

 
11  jerrywham le

Il y a encore deux chtites erreurs dans ta page :



  • dans le bloc "menu_corps medium_link" il y a une balise &gt;/li&lt; en trop,

  • la balise body se ferme avant l'appel de certains scripts (jquery, rotation des quotes). C'est la même erreur qu'avec snippetvamp... Ta marque de fabrique peut-être ??? :D

 
12  jerrywham le

Tu as aussi une erreur avec tes archives. Un req s'affiche en haut à gauche de la page. T'as dû oublier quelque chose dans ton code...

 
13  Bronco le

hinhin sans doute
dis donc c'est vrai que le ya un req dans les archives (ça pourrait même devenir une expression synonyme de bug passé inaperçu )

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le dernier caractère du mot bmv72z ?