Ich hätte da doch tatsächlih mal wieder ein problem ^^
Im folgenden Code versuche ich ein bisschen Code in PDOStatement unterzubringen. Für den Zweck wird halt ein Klässchen drumgewurschtelt.
Problem:
- Überschreibe ich execute() wird es schlich ignoriert
- Rufe ich foo() auf, ist es nicht existent.
Ganz so, als würde statt MTFrame_DB_PDOStatement einfach PDOStatement zurückgegeben ... var_dump($stmt) allerdings behauptet anderes.
PHP-Code:
<?php
class MTFrame_DB_PDOStatement extends PDOStatement
{
public function execute()
{
throw new Exception();
// Nothing happens, i'm ignored
}
public function foo()
{
throw new Exception();
// i do not exist?
}
}
class MTFrame_DB_PDO extends PDO
{
function prepare($sql)
{
return parent::prepare($sql,
array(PDO_ATTR_STATEMENT_CLASS=>array('MTFrame_DB_PDOStatement')));
}
function query($sql)
{
$stmt = parent::prepare($sql,
array(PDO_ATTR_STATEMENT_CLASS=>array('MTFrame_DB_PDOStatement')));
$stmt->foo();
return $stmt;
}
}
?>
Lesezeichen