dedlfix: Komplettes Projekt in OOP v2

Beitrag lesen

echo $begrüßung;

Aber ich speicher sie doch lokal für den _einen_ Query ab, beim nächsten Query holt er sich doch eh eine neue Verbindung aufgrund _getConnection().
Oder sollte ich einfach überprüfen - ist eine DB-Verbindung vorhanden? wenn nicht, erstelle eine und speicher sie Klassenglobal als private static $db_connection und beim nächsten mal nehme die alte abgespeicherte Verbindung?

Genau das ist meine Intention von der Arbeitsweise von _getConnection(). Ein Singleton für die Verbindung beziehungsweise das mysqli-Objekt mit geöffneter Verbindung. Zum Verbindungsöffnen gehört ja auch noch das Aushandeln einer Zeichenkodierung und die Abfrage nach aufgetretenen Fehlern. Diesen Code will man nicht ständig zu jedem Verwendungsfall hinkopieren.

Zur Datenbank verbinden

private static function db_connect(){
       $_db_connection = new mysqli(self::$_db_host, self::$_db_user, self::$_db_pw, self::$_db_name);
   if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
     exit();
   } else {
    return true;
   }

return $_db_connection;
    }

Hier musst du nochmal nachbessern. Wenn ein if-Zweig mit exit, die oder return endet (und diese nicht umgangen werden können), dann brauchst du keinen else-Zweig. Die dortigen Anweisungen können im normalen Programmkontext stehen. Du siehst dann auch, dass deine beiden returns nicht richtig sind.

throw new Exception(...);
Was kommt statt "..." hin?

Ein passender Meldungstext.

Und er erwartet "catch": Parse error: parse error, expecting `T_CATCH' in
Sprich hier : } finally {

Ach Mist. Das kommt davon, wenn man aus der Kalten was schreibt. PHP kennt kein finally. Da muss ich umbauen.

public static function db_query($sql, $asObject = false, $objectParams = null) {  
  $result = array();  
  
  if ($asObject) { // true oder string  
    if (is_string($asObject)) {  
      $className = $asObject;  
      if (!class_exists($className))  
        throw new Exception('class ' . $className . ' does not exist.');  
    } else { // kein Klassenname übergeben, Standard-Klasse verwenden lassen  
      $className = null;  
      $objectParams = null;  
    }  
  }  
  
  $mysqli = self::db_connect();  
  # $mysqli = $this->_getConnection(); // das ist eine private Methode, die mit ein mysqli-Objekt mit aktiver Verbindung gibt.  
  
  $mysqliResult = $mysqli->query($sql, MYSQLI_USE_RESULT);  
  if (!$mysqliResult)  
    throw new Exception(...);  
  
  if ($mysqliResult instanceof mysqli_result) {  
    if ($asObject) {  
      while ($row = $mysqliResult->fetch_object($className, $objectParams))  
        $result[] = $row;  
  
    } else {  
      while ($row = $mysqliResult->fetch_assoc())  
        $result[] = $row;  
    }  
  
    // wird unbedingt benötigt, wegen MYSQLI_USE_RESULT @see mysqli::query()  
    $mysqliResult->free();  
  }  
  
  return $result;  
}

echo "$verabschiedung $name";

0 77

Komplettes Projekt in OOP v2

Chris
  • php
  1. 0
    Patrick Figel
  2. 0
    Sympathisant
    1. 0
      Chris
      1. 0
        Sympathisant
        1. 0
          Sven Rautenberg
          1. 0
            Sympathisant
      2. 1
        Sven Rautenberg
        1. 0
          dedlfix
      3. 0
        CHris
  3. 0
    Tom
    1. 0
      Chris
      1. 0
        Tom
      2. 0
        Sympathisant
        1. 0
          Tom
          1. 0
            Sven Rautenberg
            1. 0
              Tom
              1. 0
                Sympathisant
                1. 0
                  Tom
                  1. 0
                    Tom
                    1. 0
                      Sympathisant
                      1. 0
                        Tom
                        1. 0
                          dedlfix
                    2. 0
                      dedlfix
                  2. 0
                    Sympathisant
                    1. 0
                      Tom
                      1. 0
                        Sympathisant
                2. 0
                  Sven Rautenberg
                  1. 0
                    Tom
                    1. 0
                      dedlfix
                3. 0
                  dedlfix
                  1. 0
                    Sympathisant
                    1. 0
                      dedlfix
                      1. 0
                        Sympathisant
              2. 0
                dedlfix
                1. 0
                  Tom
          2. 0
            Sympathisant
        2. 0
          dedlfix
    2. 0
      dedlfix
      1. 0
        Tom
        1. 0
          dedlfix
          1. 0
            Tom
            1. 0
              dedlfix
              1. 0
                Tom
  4. 0

    PDF-Doku für OOP mit PHP5

    Tom
    1. 0
      dedlfix
      1. 0
        Tom
        1. 0
          dedlfix
  5. 0

    Und noch ein eBook für PHP OOP

    Tom
  6. 4
    dedlfix
    1. 0
      Tom
      1. 0
        dedlfix
  7. 0
    Chris
    1. 0
      dedlfix
      1. 0
        Chris
        1. 0
          Tom
          1. 0
            Chris
            1. 0
              Sympathisant
              1. 0
                Tom
        2. 0
          dedlfix
      2. 0
        Chris
        1. 0
          dedlfix
          1. 0
            Chris
            1. 0
              dedlfix
              1. 0
                Chris
                1. 1
                  dedlfix
                  1. 0
                    Chris
                    1. 0
                      dedlfix
                      1. 0
                        Chris
                        1. 0
                          dedlfix
                          1. 0
                            Chris
                            1. 0
                              Tom
                              1. 0
                                dedlfix
                            2. 0
                              dedlfix
                              1. 0
                                Chris
                                1. 0
                                  dedlfix
                                  1. 0
                                    Chris