dedlfix: Configurations Parameter seprat in Klassen abspeichern?

Beitrag lesen

Tach!

private function connect() {
  define( "USER", $this->user );
  define( "PASS", $this->pass );
  define( "DSN",  $this->dsn );
  try {
    $this->DBH = new PDO( DSN, USER, PASS );

So nicht! Was sollen denn die Konstanten hier? Die sorgen dafür, dass man diese Methode nur genau einmal aufrufen darf, sonst bekommt man Gemecker, dass die Konstanten schon existieren. Konstanten werden global angelegt, diese Werte braucht man aber nur lokal. Und zum anderen kann man keine zwei verschiedenen Verbindungen aufbauen, weil die Konstanten mit dem Inhalt vom ersten Aufruf weiter existieren. Das Erstellen der Konstanten ist ein unnützer Zwischenschritt.

Welche Parameter sollen welchen Funktionen übergeben werden? Was hat das mit einer Konfiguration zu tun? Der Satz ist etwas unverständlich formuliert.

Die angeforderten Paramter der Konstruktor Funktion. Ich will die in einer Classe ablegen

Man könnte eine DB-Config-Klasse erstellen, die sich um das Zusammenstellen des DSN kümmert und auch die anderen Daten bereithält.

Bedenke aber, das jeder Code ausgegeführt werden muss und Laufzeit verbraucht. Zugriffsmethoden, die lediglich einen private gespeicherten Wert rausrücken, mögen nett sein, weil sie den Zugriff kapseln. Aber das macht die Ausführung nicht schneller. Das ist bei kompilierenden Systemen eine oder mehrere Größenordnungen weniger tragisch, weil es meist trotzdem schnell genug ist. Bei halbinterpretierten Sprachen wie PHP sollte man es sich überlegen, ob man das unbedingt so komplex braucht.

Wichte Configurationsdateien (z.B.:wie Datenbanknamen usw) würde ich in INI-Datei ablegen wie mir empfohlen wurde.

Achte hier darauf, dass man die Datei nicht aufrufen kann, z.B. so: example.com/config/cfg.ini

Das ist so pauschal gesagt kein sinnvoller Rat. Es kommt drauf an, was der Code in der aufzurufenden Datei macht. Und wie irgendwelche eingegebenen Werte da hineingelangen. Zudem kann auch beim Parsen von Ini- und anderen Dateien ein Programmierfehler zuschlagen.

dedlfix.