Mailinglisten-Archive |
Martin Spuetz wrote: > 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; > } > } Gefällt mir! Vielen Dank, das hilft mir auf alle Fälle weiter... > > Du könntest wahrscheinlich auch MyPdo_Statement direkt von > PDOStatement erben lassen. > > Gruss, > Martin > Yannik
php::bar PHP Wiki - Listenarchive