phpbar.de logo

Mailinglisten-Archive

[php] Superglobale Variablen

[php] Superglobale Variablen

Leonhard Holzer php_(at)_phpcenter.de
17 Sep 2002 19:42:57 +0200


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