Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie połączenia z baza
Forum PHP.pl > Forum > PHP
Jen
Witam.
Mam nadzieje, ze wybralam dobry dzial, bo chyba do Pro post sie nie nadaje. Wyczytalam dzis na forum, ze glupota jest utworzenie w skrypcie kilka razy identycznego polaczenia do bazy danych - tzn podczas jednego przeladowania strony tworzonych jest kilka identycznych polaczen. W takim razie gdzie moge "trzymac" to polaczenie zeby bylo dostepne z kazdego miejsca? Zmienne globalne raczej nie wchodza w gre. Chodzi mi o rozwiazanie jak najbardziej obiektowe. Np. mam klase:

  1. <?php
  2. class Polaczenie()
  3. {
  4.  var $linkDoBazy;
  5.  function __construct()
  6.  {
  7. $this->linkDoBazy = new mysqli('host','user','pass','baza');
  8.  }
  9. }
  10. ?>


i cudownie by bylo jakby mozna bylo sobie do tej klasy napisac jeszcze funcje statyczna:

  1. <?php
  2. static function udostepnij()
  3. {
  4.  return $linkDoBazy;
  5. }
  6. ?>

Ale jak wiadomo nic z tego:)
I o ile po utworzeniu nowego obiektu Polaczenie:
  1. <?php
  2. $pol = new Polaczenie();
  3. ?>

poza klasami moge korzystac z $pol->linkDoBazy to juz inne klasy tego polaczenia widziec nie beda i jezeli utworze sobie np. klase B, ktorej metody potrzebowaly beda dostepu do bazy to bede musiala utworzyc dla tej klasy osobne polaczenie z baza. Czy ktos moglby pomoc mi rozwiazac problem wielokrotnego tworzenia polaczenia? Obiektowo - bez funkcji "pozaklasowych".

Co prawda mozna to rozwiazac tak:
  1. <?php
  2. class B
  3. {
  4. static function zapytaj($pol)
  5. {
  6. $wynik = $pol->query("SELECT ...");
  7. // obrabianie wyniku
  8. }
  9. }
  10. ?>

i w wywolaniu metody zapytaj() jako argumentu uzyc $pol->linkDoBazy:
  1. <?php
  2. $a = B::zapytaj($pol->linkDoBazy);
  3. ?>

Ale czy to rozwiazanie jest do przyjecia? Czy takie sie praktykuje?
Pozdrawiam Forumowiczow:)
Astarot
Proponuje zapoznanie się ze wzorcem Singleton
Jen
Dzieki Astarot.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.