Autor Zpráva
EdWood
Profil
Zdravím,
s OOP začínám a není mi jasné, jak vyřešit následující problém. Mám vytvořený connect k db:

try {
    $db = new PDO('pgsql:host=localhost;dbname=x', 'x', 'x');
} catch (Exception $e) {
    echo "Nelze se připojit k databázi ".$e->getMessage();
    exit();
}

Dále mám třídu, kde mi metoda pracuje s db. Aby správně fungovala, musí u ní být vždy výše zmíněný kód. To mi přijde divné, protože by pak u každé metody, kde budu pracovat s db, došlo k napojování znovu a znovu.

  public function pridat($p_jmeno, $p_prijmeni, $p_prezdivka)
  {
    try{
        $db = new PDO('pgsql:host=localhost;dbname=x', 'x', 'x');
    } catch (Exception $e) {
        echo "Nelze se připojit k databázi ".$e->getMessage();
        exit();
    }    
    try {
      $stmt = $db->query("INSERT INTO osoby (prezdivka, jmeno, prijmeni) VALUES ( '$p_prezdivka', '$p_jmeno', '$p_prijmeni')");
      echo "<p>Osoba byla úspěšně vložena</p>";
    } catch (Exception $e) {
        echo "<p>Při zpracování SQL dotazu došlo k chybě ".$e->getMessage()."</p>";
    }
  }

Jak se to tedy řeší? Děkuji
Bertram
Profil
Ahoj, můžeš si objekt připojení vytvořit jen jednou a třídám, které ho potřebují ho předávat v konstruktoru nebo setterem.
EdWood
Profil
Díky, nakonec jsem to vyřešil přes singleton (cca patý komentář).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: