Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połączenie z bazą danych, raz., Wygodne i bez zbędnego pisania
fannet
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.11.2005

Ostrzeżenie: (0%)
-----


Witajcie piszę ponieważ mam od dłuższego czasu problem związany z programowaniem obiektowym, otóż staram się uczyć, ale nie jakoś chce do tej głowy wpadać, no ale do rzeczy otóż staram się pisać jakieś klasy w nich metody, ale większość z nich wymaga połączenia z bazą danych i wychodzi że na 10 klas w każdej mam w konstruktorze coś takiego:
  1. <?php
  2. function __construct()
  3. {
  4.  if(!$this->connect = new mysqli(HOST, USER, PASS, NAME))
  5.  {
  6.    throw new Exception("jak zwykle złe połączenie");
  7.  }
  8. }
  9. ?>
W programowaniu obiektowych chyba podstawowym założeniem jest aby kod się nie powtarzał i żeby jeden napisany kod był wykorzystywany wiele razy, a w moim przypadku wygląda to zupełnie odwrotnie.. Proszę o jakieś naprowadzenie mnie na tą właściwą drogę w mojej i tak już pomieszanej nauce.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pax95
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


@UP: Właśnie nie o to mi chodziło :]. Połączenie tworzymy tylko jedno, nie inicjujemy go w każdej klasie.
EDIT: Nie będę żałował.
  1. <?php
  2. class Datebase
  3. {
  4.   private static $s_instance;
  5.  
  6.   private function __construct()
  7.   {
  8.      // Połączenie z bazą danych
  9.   }
  10.  
  11.   public static function getInstance()
  12.   {
  13.      if ( self::$s_instance === null )
  14.      {
  15.         self::$s_instance = new self;
  16.      }
  17.      return self::$s_instance
  18.   }
  19.  
  20.   public function __destruct()
  21.   {
  22.      // Usunięcie połączenia
  23.   }
  24. }
  25. ?>


Inicjujemy na samym początku np. index.php
  1. <?php
  2. $Datebase = Datebase::getInstance();
  3. //dalsze operacje
  4. ?>


Ten post edytował Pax95 31.01.2009, 13:59:28
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 11:36