OOP: Verständnisfragen Klassen, Methoden
windhund
- php
hallo
ich bin dabei OOP mit PHP zu lernen. ich habe bereits mit großem Erfolg verschiedenste Klassen benutzt,zB. SMARTY oder verschiedenstes von PEAR. Nun aber möchte ich eigene Klassen schreiben. zB. DB Afrageroutinen, die ich immer wieder benutze möchte ich in ne Klasse schreiben:
class DBClass
{
// DB zugang
require_once('zugangsdaten.php');// die DB Parameter Host, User, Passwort
// private $tablename = "mytable"; ?? korrekt?
function selectrow($sql) {
// DB aufruf
...
return $row; // einfaches Array bei Fehlerfrei
..
return false; // bei DB Fehler
}
}
in dem Beispiel soll selectrow einen einfachen SELECT auf eine Reihe durchführen. als Rückgabe soll die Methode die Ergebn.reihe als einfaches Array ausgeben, im Feherfall aber false
als Fehlermeldung:
$DBselect = new DBClassMB;
$sql= "SQL statement..";
$myrow = $DBselect->selectrow($sql); // ein einfaches assoz. Array
if ($myrow == false) // Fehlermeldung
else ...// $myrow ist
ist das korrekt so? wie kann ich überhaupt den Fehlerfall, den mySQLi
senden, abfangen? wie def. ich korrekterweise den Tabellennamen $tablename innerhalb der klasse? (oder soll ich sie als parameter mitübergeben besser?)
und wie mache ich das wenn ich ein mehrreihiges Array, einen Ergebnisset zurückbekommen will? die Methode in der Klasse lautet etwa so:
function selectrows($sql) {
// DB aufruf
return $row; // mehrreihiges Array bei Fehlerfrei
....
return false; // bei DB Fehler
}
ich weiss, das Forum ist eig. für "einfach gestrickte" Fragen, vl. könnt ihr mir dennoch gute Quellen dafür benennen wo ich mich vertiefen kann ?!
Danke, Gruß
Hallo,
ich bin dabei OOP mit PHP zu lernen. ich habe bereits mit großem Erfolg verschiedenste Klassen benutzt,zB. SMARTY oder verschiedenstes von PEAR. Nun aber möchte ich eigene Klassen schreiben. zB. DB Afrageroutinen, die ich immer wieder benutze möchte ich in ne Klasse schreiben:
class DBClass
{
// DB zugang
require_once('zugangsdaten.php');// die DB Parameter Host, User, Passwort
das ist keine gute Idee. Innerhalb von Klassen sollte man nicht andere Ressourcen einbinden.
Für die Verbindung zur Datenbank bietet sich das Singleton-Muster an, siehe z.B. diverse Beiträge von dedlfix im Forumsarchiv:
[link:/archiv/2007/3/t147941/#m959523]
[link:/archiv/2008/2/t166741/#m1087551]
und wie mache ich das wenn ich ein mehrreihiges Array, einen Ergebnisset zurückbekommen will? die Methode in der Klasse lautet etwa so:
ich sehe wenig Grund, den Spezialfall: die Daten bestehen aus einem Datensatz eigens zu behandeln; wenn überhaupt wäre meiner Meinung nach eher der Spezialfall Deines Spezialfalles eine Betrachtung wert: die Rückgabe ist ein Skalar, d.h. die Abfrage liefert genau einen Datensatz mit genau einer Spalte wie z.B. die Abfrage
[code lang=sql]SELECT COUNT(*) FROM tabelle
Freundliche Grüße
Vinzenz