Fonction PHP : jslog()
Ici, vous pouvez voir (et copier/coller) le code complet de la fonction PHP jslog(). N'hésitez pas voter pour cette fonction si elle vous plaît ou si vous vouv en servez !
jslog() ajouté le 2009-08-12 14:59:59 par Arkadir
function jslog()
{
if (defined('NO_JSLOG'))
return;
$args = func_get_args();
if (empty($args)) {
return create_function('$x',
'if (strpos($x,"</head>") > 0){
$s = "<script type=text/javascript>";
$e = "</script></head>";
$x = str_replace("</head>",$s.$_SESSION["jslog"].$e,$x);
$_SESSION["jslog"] = "";
} return $x;');
}
$_SESSION['jslog'] .= 'console.log('.
implode(',',array_map('json_encode',$args)).
');';
}
Envoyer des données de journal vers Firebug. Pour initialiser:
session_start();
ob_start(jslog());
Une fois l'initialisation faite, vous pouvez utiliser la fonction à la manière d'un "echo" qui fait apparaître le texte envoyé dans une ligne de la console Firebug:
jslog("Bonjour!");
Utlisation plus avancée, à la façon d'un "var_dump", mais avec l'avantage immense que l'objet sera disponible dans l'explorateur d'objets de Firebug, beaucoup plus commode que l'aspect austère du var_dump (et en plus, sans enlaidir l'affichage de la page):
jslog($_POST);
Utilisation à la façon d'un printf:
jslog("Perçu €%.2f pour l'utilisateur `%s`.", $euros, $user_login);
Utilisation à la façon d'un printf, mais en faisant apparaître les objets sous forme cliquable et explorable:
jslog("date: %s | requete: %s | get: %o | post: %o | session: %o",
date('Y-m-d h:i:s'),
$_SERVER['REQUEST_URI'],
$_GET,
$_POST,
$_SESSION);
jslog() conserve en mémoire toutes les lignes écrites, jusqu'à ce qu'il ait pu les envoyer à l'utilisateur dans une page HTML normale. Donc, si vous mettez des jslog() sur une page qui plante irrémédiablement ou qui redirige vers une autre page ou qui est appellée en AJAX, les lignes seront renvoyées à la prochaine visite d'une page (il est donc conseillé de commencer chaque visite par une ligne indiquant le REQUEST_URI et la date). On peut donc déboguer ses requêtes AJAX simplement en visitant une autre page après avoir fait la requête.
Pour désactiver les sorties au niveau global, il suffit de décommenter l'initialisation, ou bien de placer avant la première utilisation:
define('NO_JSLOG','');
Commentaires sur la fonctions php
Arkadir 13/08/2009 à 02:10
L'installation est plus facile : copier-coller ce code dans le site que tu veux ausculter, faire tes appels. J'ai rarement la liberté de mettre quelque chose d'aussi intrusif que FirePHP dans les sites que je retape, surtout que si j'ai besoin de les retaper c'est souvent qu'ils n'utilisent pas ZF :) ...
Julien Breux 17/08/2009 à 01:39
Ceci dit, ça reste du procédurale, et question log, pas top, rien ne vaut un output externe avec une console sur le deuxième écran et un tail !
Pour ce qui est de FirePHP, c'est un include et des tonnes d'outils.
syndrael 12/08/2009 à 21:56
Il y a une différence avec FirePHP ??