Citat:
centaur: Dobra praksa za "prenosenje" objekata je
registry pattern
PS Prvi odgovor na ovu temu je totalna glupost

U svakom slučaju registry patern !! Radi posao mnogo bolje nego ovaj predlog:
Citat:
centaur: Zašto ta specijalna klase jednostavno ne nasledi tu klasu za rad sa bazom?
E sad, i ovo nasledjivanje može nekad da se upotrebi, ali ne baš u ovakvom kontekstu.
Neki primer gde ima nasledjivanja kod klasa za rad sa bazama podataka bi recimo bio da imamo apstraktnu klasu dbal(database abstraction layer)
onda iz nje izvodimo klase za rad sa specificnim tipovima baza podataka mysql, mssql, firebird...
Citat:
Tudfa
Ovo ti je jedan od načina, sve zavisi šta ti je cilj i šta ti odgovara.
I da se nadovežem na ovo, jer ovaj moj predlog isto nije najsjajnije rešenje kad se radi sa bazom, ali je koristilo zbog primera.
Bolja varijanta je ova što je Mister_Rap predlozio jer se tada ne otvara nova konekcija svaki put kad se pozove metod konektuj.
Inače kao što je Nikola napomenuo za registry klasu, singleton patern mozes da koristiš i za database klasu. Ja sam od skoro počeo
da je koristim i svidja mi se jer otvorim konekciju na početku i posle koristim samo getInstance() da bi dobio instancu db klase.
Evo kako bi u osnovi izgledala database klasa sa singleton paternom:
Code:
<?php
class SingletonDatabase
{
private static $instance;
private $mysqli = null;
private function __construct()
{
//ovde samo otvoris konekciju
}
private function __clone(){}
public static function getInstance()
{
if (!self::$instance instanceof self)
{
self::$instance = new self;
}
return self::$instance;
}
//ovde posle definišeš funkcije za izvršavanje upita
public function __destruct(){if($this->mysqli){$this->mysqli->close();}}
}
?>