Als ich FirePHP das erste mal gesehen hab, hab ich mich sofort verliebt
Es ist genau das was ich schon immer für die Arbeit mit PHP gesucht hab. Ich habe eine Variable und möchte sehen was drin steht, mit FirePHP kommt das nicht mehr schlecht lesbar auf der Website raus, es landet direkt schön formatiert in meiner FireBug-Konsole
Fürs ZendFramework gibt es sogar einen Datenbank-Profiler.
Hier eine kurze Anleitung wie es sich mit ZendFramework verwenden lässt:
Als erstes braucht man die FirePHP-Extension. Sobald die installiert ist, landen alle Debug-Ausgaben von Seiten, die FirePHP nutzen in der Firebug-Konsole.
Im ZendFramework ist eigentlich schon alle vorhanden, was man braucht. FirePHP funktioniert nämlich ganz einfach mit Zend_Log.
In der Bootstrap.php der ZendFramework Application fügen wir eine neue Methode ein:
protected function _initDebug()
{
if (APPLICATION_ENV == 'development')
{
// Firephp
$logger = new Zend_Log();
$writer = new Zend_Log_Writer_Firebug();
$logger->addWriter($writer);
Zend_Registry::set('logger', $logger);
}
}
Da Zend_Log von sich aus die dump()-Methode von FireBug nicht unterstützt, habe ich Zend_Log ein bisschen extended:
class Mylib_Log extends Zend_Log
{
const DUMP = 'DUMP';
/**
* bildet das Verhalten von FireBUG->dump() nach.
* @param variable
* @param variablenname optional
*/
public function dump($var, $varname='')
{
$this->log($var, Mylib_Log::DUMP, (empty($varname) ? array() : array('firebugLabel' => $varname)));
}
}
Damit ist es ganz einfach möglich Variablen zu dumpen und das ganze wird dann in FireBUG auch schön formatiert.
Damit können wir auch unsere _initDebug()-Methode noch ein bisschen verschönern:
protected function _initDebug()
{
if (APPLICATION_ENV == 'development')
{
// Firephp, diesmal mit der eigenen Log-Klasse:
$logger = new MyLib_Log();
$writer = new Zend_Log_Writer_Firebug();
$logger->addWriter($writer);
Zend_Registry::set('logger', $logger);
// gleich alle interessanten Werte ausgeben:
$logger->dump($_POST, 'POST');
$logger->dump($_GET, 'GET');
$logger->dump($_SESSION, 'SESSION');
$logger->dump($_COOKIE, 'COOKIE');
$logger->dump($_SERVER, 'SERVER');
}
}
Außerdem ist es ungemein hilfreich, wenn man im Controller nicht immer $logger = Zend_Registry::get(’logger’); schreiben muss, also erweitern wir noch unseren Controller wie folgt:
abstract class Mylib_Controller_Abstract extends Zend_Controller_Action
{
protected $logger = null;
public function init()
{
// logger
$this->logger = Zend_Registry::get('logger');
parent::init();
}
}
Jetzt kann FireBUG endlich verwendet werden:
class IndexController extends Mylib_Controller_Abstract
{
public function indexAction()
{
$this->logger->debug($this->db->query("SELECT * FROM tbl_users;")->fetchAll());
$this->logger->log('Einfach mal geloggt...');
$this->logger->info('Eine Information!');
$this->logger->warn('Eine Warnung!');
$this->logger->error('Oh nein, ein Fehler!');
// $this->logger->dump(...); hab ich ja in der Bootstrap.php schon verwendet
}
}
Viel Spass beim Ausprobieren!


