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