Mailinglisten-Archive |
Lutz Zetzsche wrote:
> Hi Yannik,
>
> Am Mittwoch, 25. Oktober 2006 18:28 schrieb Yannik Hampe:
>> 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?
>
> vorweg möchte ich sagen, daß ich das Überladen in PHP5 noch nicht selbst
> verwendet habe. Alles was ich darüber hinsichtlich PHP weiß, habe ich
> mir im Handbuch angelesen.
>
> Ich vermute, daß das, was Du möchtest, nicht geht. Im Online-Handbuch
> steht:
>
> "Both method calls and member accesses can be overloaded via the __call,
> __get and __set methods. These methods will only be triggered when your
> object or inherited object doesn't contain the member or method you're
> trying to access."
> (Quelle: http://www.php.net/manual/en/language.oop5.overloading.php)
Das meine ich nicht...
>
> Da PDOStatement::execute schon existiert, ist im PHP-Sinne ein Überladen
> mit __call also nicht möglich.
>
> Oder meinst Du Überladen so, wie es in Java gemeint ist? Oder meinst Du
> gar Überschreiben, wie es auch in Java verwendet wird?
Ja, genau... Überladen wie in Java... Nur kurz, damit ich jetzt nicht
gerade Überladen und Überschreiben durcheinander bekomme: Ich will schon
noch in der Lage seine mit parent::altefunktion() die alte Funktion
aufzurufen.
>
> Vielleicht kannst Du mal den Code zeigen, sowohl die Erweiterung als
> auch den Aufruf. :-)
Klar doch. Simples Beispiel:
class yPDOStatement extends PDOStatement
{
public function execute($ar)
{
//Hier Zeugs machen (logging, debugging, pre-processing und sowas)
parent::execute($ar); //dann die alte execute-Funktion aufrufen.
}
}
Das würde schon alles machen, was ich will, nur dass PDO::prepare mir
ein PDOStatement und kein yPDOStatement zurückgibt.
>
>
> Viele Grüße
> Lutz
Yannik
php::bar PHP Wiki - Listenarchive