| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

04-06-2009, 13:30
|
|
Fenja
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 5
|
|
Datenbankzugriff OOP
Hallo zusammen,
ich habe ein Verständnisproblem in Bezug auf die Objektorientierte Programmierung.
Wenn ich die Verbindung zur Datenbank aufbaue sollte es doch wie folgt aussehen (aus dem Buch PHP 5 und MySQL 5):
PHP-Code:
// -- Verbindung zur Datenbank aufbauen class DbConnect { protected $mysqli; // Konstruktor (Objekt dieser Klass erzeugen) function __construct(){ require_once('_privat/libery.inc.php'); $this->mysqli = @new mysqli($mysqlhost,$mysqluser,$mysqlpasswd,$mysqldb); // test der Verbindung if(mysqli_connect_errno()){ printf("<p>Fehler: Keine Datenbankverbindung</p>", mysqli_connect_error()); $this->mysqli = FALSE; exit(); } } // Destruktor (Objekt löschen) function __destruct() { this->close(); } // Verbindung/Objekt explizit löschen function close(){ if($this->mysqli){ $this->mysqli->close(); $this->mysqli = FALSE; } } }
Nun möchte ich beispielsweise für ein datenbankbasiertes Gästebuch die INSERT-, UPDATE- und DELETE-Anweisungen in einer separaten Datei gaestebuch.php in einer eigenen Klasse unterbringen. Wie nutze ich dann die oben gezeigte Datenbankverbindung?
Ich würde mich sehr freuen, wenn Ihr mir da weiter helfen könnt.
|

04-06-2009, 13:36
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
z.B.
PHP-Code:
$gb = new GaesteBuchModel($dbverbindung);
Könnte für dich von interesse sein:
Registry Design Pattern
Dependency Injection Design Pattern
Singleton Design Pattern(weniger schön)
Geändert von combie (04-06-2009 um 13:48 Uhr)
|

04-06-2009, 14:30
|
|
Fenja
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 5
|
|
Hallo combie,
vielen Dank für die schnelle Antwort. Ich denke, es ist sinnvoll die Datenbank-Klasse als Singleton Pattern anzulegen da so nur eine Instanz einer Klasse erzeugt wird. Leider habe ich aber noch keine gutes Tutorial gefunden.
Schön wäre es ja, wenn da noch jemand eine gute und leicht verständliche Einstiegslektüre kennt ;-)
|

04-06-2009, 14:32
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von Fenja
Ich denke, es ist sinnvoll die Datenbank-Klasse als Singleton Pattern anzulegen da so nur eine Instanz einer Klasse erzeugt wird.
|
Und was ist, wenn du mal zwei Datenbankverbindungen brauchst?
|

04-06-2009, 14:50
|
|
Fenja
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 5
|
|
2 Datenbanken? Aber ich kann doch für ein System mit Beispielsweise Gästebuch, Forum, Benutzerverwaltung, etc. beliebig viele Tabellen anlegen. Wann braucht man denn 2 Datenbanken?
|

04-06-2009, 14:57
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von Fenja
2 Datenbanken? Aber ich kann doch für ein System mit Beispielsweise Gästebuch, Forum, Benutzerverwaltung, etc. beliebig viele Tabellen anlegen. Wann braucht man denn 2 Datenbanken?
|
Aber wenn du eine zweite Datenbankverbindung einmal brauchen würdest, was machst du dann?
|

04-06-2009, 15:02
|
|
Fenja
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 5
|
|
Wie Du sicher an meiner Antwort erkannt hast, darüber habe ich mir keine Gedanken gemacht. Ich kann mir nicht vorstellen, dass ich das je brauche...
Da Du diese Frage stellst, kennst Du Anwendungsfälle für die ich 2 Datenbanken benötige? Und weiterhin kennst Du eine bessere Lösung? Ich habe ja gelesen, das Singleton Design Pattern weniger schön ist, aber warum?
|

04-06-2009, 15:26
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Es is ein "platter" Ersatz für globale Variablen und bietet nur wenig Mehrwert.
|

05-06-2009, 11:48
|
|
Patrick_PQ
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Beiträge: 480
|
|
Hallo Fenja,
da du auch nach Einstiegslektüre fragst: ich habe mir vor einige Zeit PHP Design Pattern besorgt - ist zwar nicht gerade preiswert, beschreibt den Einsatz von Entwurfsmustern mit PHP aber recht gut (meine Meinung).
Damit habe ich schnell verstanden wofür die gängigen Entwurfsmuster gut sind. Letztlich habe ich mich dann aber doch entschieden nicht alles selbst zu basteln sondern das Zend_Framework zu nutzten. Hier gibt es eigentlich alles was für eine typische Anwendung benötigt wird - auch eine Datenbankverbindung.
|

05-06-2009, 18:21
|
|
floorball92
Registrierter Benutzer
|
|
Registriert seit: Nov 2008
Ort: Germany->Hesse->Frankfurt
Beiträge: 15
|
|
Kannst auch einfach in deiner Gästebuch Klasse die DB Connect Klasse erben und im Constructor ebenfalls den parent Constructor ausführen. MySQLi sorgt ja dafür, dass bei mehrmalige verwendung der DB Connect Klasse keine mehrfach Verbindung zur DB passiert.
|

09-06-2009, 11:08
|
|
Fenja
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 5
|
|
Also über das Buch habe ich auch schon nachgedacht. Mir ist es generell einfach wichtig, wenn ich etwas programmiere dies so übersichtlich und strukturiert wie möglich zu machen.
Das Framwork ist sicher eine gute Sache, aber zunächst geht es mir darum, das Programmieren an sich zu beherrschen. Da die Basis größerer Anwendungen nun mal die Datenbankverbindung ist, wollte ich hier ansetzen. Leider gibt es ja bekanntlich viele Wege nach Rom, aber ich würde gern den sichersten, schnellsten und übersichtlichsten gehen.
Ich werde mir das Buch mal genauer ansehen und ein wenig mit den Möglichkeiten experimentieren. Sollten weitere Fragen auftauchen, werde ich mich hier noch ein mal melden.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|