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