Mailinglisten-Archive |
Am Die, 2002-09-17 um 15.01 schrieb Andreas Lange: > class class_sql { > [...] > } > > $sql = new class_sql; > > [...] > > class artikel { > function do_something() { > global $sql; > $sql->query('SELECT * FROM artikel'); > } > } > Meiner Meinung wiederspricht es den Regeln der OOP solche globale Variablen zu verwenden. Du verwendest nämlich Instanzen von Klassen deren initialisierung und Zustand der Klasse selbst nicht bekannt sind. Zudem ist das Interface der Klasse Artikel nicht genau definiert und nur für einen Programmierer, der auch den Quellcode im einzelnen studiert kann die Klsse wiederverwenden. Das Ziel der OOP sollte es nämlich sein eine Aufgabenstellung wie dei Verwaltung eines Artikels zu abstrahieren. Jeder der die Klasse verwendet sollte die Funktion do_something verwenden könne ohne die genauen internen Abläufe der Aufgabenstellung kenne zu müssen. Dieses Konzept erleichtert die Wiederverwendbarkeit des Programmcodes. Ich sehe dein Problem als ein typische Beispiel für ein Singleton Pattern. Du hast eine einzige Instanz einer Klasse die deine Datenbankverbindung handelt. Datenbankaufrufe hast du aber in verschiedenen Klassen und Funktionen. Wie du das realisiert ist in vielen Beispielen beschrieben. So hat Bergmann einen Artikel darüber geschrieben und auch auf Zend müßte ein Beispiel zu finden sein. Dieses Konstrukt erfordert zwar etwas mehr Aufwand aber es erlaubt dir auch einen gesicherten zentralen Zugriff auf die Datenbank und erhöht auch die Wiederverwendbarkeit deines Codes. Gruß Leonhard
php::bar PHP Wiki - Listenarchive