hotti: Vorbelegung von Funktionsargumenten

Beitrag lesen

Liebe Mitdenker,

Also doch lieber im Funktionskörper verwursten und vorher mit defined() fragen, ob die Konstanten überhaupt deklariert und definiert wurden.

Genau in diese Richtung habe ich vorhin gedacht ;)

Btw., ich bin kein Freund von Konstanten. Vielmehr belege ich oft eine Variable mit undef vor, was die Prüfung, ob was Definiertes übergeben wurde dann eindeutig macht. Der Vollständigkeit halber ein Beispiel:

  
    private function dbh($cfg){  
        $default = array(  
            'user' => AMADEUS,  
            'pass' => KONSTANZE,  
            'host' => 'localhost',  
            'port' => 3306,  
            'base' => WIEN,  
        );  
        $cred = array_merge($default, $cfg);  
        $this->DBH = new PDO(sprintf("mysql:dbname=%s;host=%s", $cred['base'], $cred['host']),  
            $cred['user'], $cred['pass'],  
            array(  
                PDO::ATTR_TIMEOUT => 2,  
                PDO::ATTR_PERSISTENT => TRUE,  
                //PDO::MYSQL_ATTR_INIT_COMMAND =>  "SET NAMES 'UTF8'",  
            ));  
        $this->DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    }  

Und hier gleich das mögliche Problem: Nach dem Deploy funktioniert die DB-Verbindung nicht. ERRMODE_EXCEPTION greift nicht, weil das DBHandle gar nicht erst erstellt werden konnte.

Es wäre zu prüfen, ob die Credentials überhaupt in der Funktion angekommen sind, egal ob als Konstantze oder als Argument. Hier erschwert die Vorbelegung eine Fehlersuche.

MfG