phpbar.de logo

Mailinglisten-Archive

[php] PDOStatement::execute überladen

[php] PDOStatement::execute überladen

Yannik Hampe yannikh at gmail.com
Mit Okt 25 20:53:17 CEST 2006



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