phpbar.de logo

Mailinglisten-Archive

[php] PDOStatement::execute überladen

[php] PDOStatement::execute überladen

Martin Spuetz mas at spuetz.ath.cx
Mit Okt 25 20:26:24 CEST 2006


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