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:
<?php class Polaczenie() { var $linkDoBazy; function __construct() { $this->linkDoBazy = new mysqli('host','user','pass','baza'); } } ?>
i cudownie by bylo jakby mozna bylo sobie do tej klasy napisac jeszcze funcje statyczna:
<?php { return $linkDoBazy; } ?>
Ale jak wiadomo nic z tego:)
I o ile po utworzeniu nowego obiektu Polaczenie:
<?php $pol = new Polaczenie(); ?>
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:
<?php class B { { $wynik = $pol->query("SELECT ..."); // obrabianie wyniku } } ?>
i w wywolaniu metody zapytaj() jako argumentu uzyc $pol->linkDoBazy:
<?php $a = B::zapytaj($pol->linkDoBazy); ?>
Ale czy to rozwiazanie jest do przyjecia? Czy takie sie praktykuje?
Pozdrawiam Forumowiczow:)