Mailinglisten-Archive |
Hallo,
Yannik Hampe wrote:
> ich beschäftige mich gerade etwas mit PDO.
> Ich wollte die execute-Funktion von PDOStatement nun etwas erweitern und
> habe versucht einfach eine Klasse von PDOStatement abzuleiten, die dann
> execute überläd.
> Nur leider gibt PDO::prepare immer ein PDOStatement zurück und nicht
> meine abgeleitete Klasse. Gibt es eine Möglichkeit, wie ich execute
> trotzdem überladen kann?
ich hab das z.B. in einem aktuellen Projekt so gemacht:
class MyPdo extends PDO {
public function prepare($sql, $driver_options = array())
{
$stmt = parent::prepare($sql, $driver_options);
return new MyPdo_Statement($stmt, $sql);
}
}
class MyPdo_Statement {
private $_pdo_stmt = NULL;
private $_sql;
public function __construct(PDOStatement $stmt, $sql)
{
$this->_pdo_stmt = $stmt;
$this->_sql = $sql;
}
public function __call($method, $params)
{
$m = call_user_func_array(array($this->_pdo_stmt, $method), $params);
//...
return $m;
}
}
Du könntest wahrscheinlich auch MyPdo_Statement direkt von
PDOStatement erben lassen.
Gruss,
Martin
php::bar PHP Wiki - Listenarchive