Sollte man Konstanten setzen oder nicht?

Funktionalität ist hier nicht umbedingt gegeben es ist nur ein Beispiel...

Beispiel mit Konstanten....
PHP:
class mysqldb{
  const DBNAME = "testdb";
  const DBUSER = "testuser";
  const DBHOST = "localhost";
  const DBPASS = "testpw";
  private $link;
  public function __construct(){
      $this->connect();
  }
  public funciton __destruct(){
      $this->close();
  }
  private function connect(){
     $this->link = mysql_connect(mysqldb::DBNAME, ...);
  }
  private function close(){
    if(is_resource($this->link)){
       mysql_close($this->link);
    }
  }
  .....
}

PHP:
class mysqldb{
  private $dbname = "";
  private $dbuser = "";
  private $dbhost = "";
  private $dbpass = "";
  private $link;
  public function __construct($name, $user, $host, $pass){
      $this->dbname = $name;
       $this->dbuser = $user;
       $this->dbhost = $host;
       $this->dbpass = $pass;
       $this->connect();
  }
  public funciton __destruct(){
      $this->close();
  }
  private function connect(){
     $this->link = mysql_connect($this->dbname, ...);
  }
  private function close(){
    if(is_resource($this->link)){
       mysql_close($this->link);
    }
  }
  .....
}
 
Ich denke hier gibt es nicht richtig oder falsch, da muß jeder für sich selbst entscheiden was er wählt....
Ich hab es in diesem Fall via Beispiel 2 gelöst, ich kann dir aber selbst nicht sagen wieso weshalb warum...
Falls auch andere abgeleitete klassen auf die Variablen zugreifen sollen, wird anstatt private protected verwendet....

Ansonsten ist für mich immer wichtig eine Ausführliche Fehlerbeschreibung....
Entweder werden die Fehler einfach direkt als string ausgeworfen oder ich habe alle Fehlermeldungen im kopf der Klasse in einzelnen Konstanten gespeichert....
 
Konstanten sind immer dann sinnvoll, wenn konstante Werte repräsentiert werden sollen. Typische Anwendungsbeispiele dafür sind magische Zahlen wie etwa Fehlermeldungen, Status für Dateiuploads aber auch mathematische Konstanten und andere absolut konstante Werte. Hier ist es einfacher sich die Namen der Konstanten zu merken als die Werte selbst, die sie repräsentieren.
Es gibt aber auch möglich, Laufzeitkonstanten zu nutzen, die je nach Kontext einen anderen aber dennoch für die Laufzeit konstanten Wert haben (müssen), so etwa DIRECTORY_SEPARATOR (enthält je nach Betriebssystem „/“ oder „\“) oder aber SID.
 
Wenn ich das Script jetzt so habe:
PHP:
class mysqldb{
  private $dbname = "";
  private $dbuser = "";
  private $dbhost = "";
  private $dbpass = "";
  private $link;
 public function __construct($name, $user = "user", $host = "localhost", $pass = "pass"){
      $this->dbname = $name;
       $this->dbuser = $user;
       $this->dbhost = $host;
       $this->dbpass = $pass;
       $this->connect();
  }
  private function connect(){
     $this->link = mysql_connect($this->dbhost,$this->dbuser,$this->dbpass);
     $this->select_db($this->dbname);
  }
  private function select_db($db_nr){
     $this->select = mysql_select_db($this->dbname); 
  }
  puplic function close(){
    if(is_resource($this->link)){
       mysql_close($this->link);
    }
  }
}

Wie kann ich es dann machen das ich unter der Funktion __construct unter name eine 1, 2 oder 3 eigen kann und er mir aus einer Array die DB mit der Array nummer sucht
Also ich habe die array:
PHP:
$dbs = array("db1", "db2", "db3");
Und ich als name 1 eingebe maöchte ich das er zur db1 connectet..
 
Du hast es nicht richtig verstanden xD
Ich meine das ich in der Funktion __construct nur eine nummer bei name eingeben muss und er sucht mir die passende DB
 
Du hast es nicht richtig verstanden xD
Ich meine das ich in der Funktion __construct nur eine nummer bei name eingeben muss und er sucht mir die passende DB

Da muß ich dich enttäuschen....
Du hast noch nicht verstanden wofür __construct() steht...
Du erstellst ein Object von der Klasse mysqldb
PHP:
$connection = new mysqldb(,,,);
Wenn dieses Object erstellt wird, wird die funktion __construct aufgerufen....
Der Konstruktor in deinem Beispiel ruft die funktion connect auf und baut die verbindung auf...

Es macht mehr sinn, wenn du für eine Verbindung zu einer weiteren Datenbank einfach ein weiteres Object erstellst....
PHP:
$con1 = new mysqldb(...);
$con2 = new mysqldb(...);
 
Zurück