<?php

// using PDO dsn for connecting sqlite memory table

$dbh = Doctrine_DB::getConnection('sqlite::memory:');

class MyLogger extends Doctrine_DB_EventListener {
    public function onPreQuery(Doctrine_DB $dbh, $query, $params) {
        print "database is going to be queried!";
    }
    public function onQuery(Doctrine_DB $dbh, $query, $params) {
        print "executed: $query";
    }
}

$dbh->setListener(new MyLogger());

$dbh->query("SELECT * FROM foo"); 
// prints:
// database is going to be queried
// executed: SELECT * FROM foo


class MyLogger2 extends Doctrine_Overloadable {
    public function __call($m, $a) {
        print $m." called!";
    }
}

$dbh->setListener(new MyLogger2());

$dbh->exec("DELETE FROM foo");
// prints:
// onPreExec called!
// onExec called!
?>