w projekcie uzywam smarty i m.in. PEARowskiej klasy MDB2 do oslugi bazy danych.
pozatym napisalem kilka klas i w niektorych z nich potrzebuje obiektu $smarty i/lub $mdb2.
ktore z nastepujacych rozwiazan bedzie najlepsze pod wzgledem wydajnosci?:
1) uzywam instrukcji global w konstruktorze klasy i przypisuje obiekty $smarty i $mdb2 do wlasciwosci $this->smarty i $this->mdb2 danej klasy
<?php $smarty = new Smarty(); $mdb2 =& MDB2::connect($CONFIG['db']['dsn']); $objClass1 = new Class1() $objClass2 = new Class2() itd. //a w klasach class Class1 //Class2 itd... { private $smarty; private $mdb2; function __construct() { $this->smarty=$smarty; $this->mdb2=$mdb2; //i juz w innych metodach uzywam $this->smarty i $this->mdb2 } } ?>
2) przekazuje obiekty $smarty i $mdb2 przez referencje do konstruktora danej klasy i tam przypisuje je do wlasciwosci $this->smarty i $this->mdb2 danej klasy
<?php $smarty = new Smarty(); $mdb2 =& MDB2::connect($CONFIG['db']['dsn']); $objClass1 = new Class1($smarty,$mdb2) $objClass2 = new Class2($smarty,$mdb2) itd. //a w klasach class Class1 //Class2 itd... { private $smarty; private $mdb2; function __construct(&$smarty,&$mdb2) { $this->smarty=$smarty; $this->mdb2=$mdb2; //i juz w innych metodach uzywam $this->smarty i $this->mdb2 } } ?>
3) w konstruktorze danej klasy tworze obiekty $smarty i $mdb2 i przypisuje je do wlasciwosci $this->smarty i $this->mdb2 danej klasy
<?php $objClass1 = new Class1() $objClass2 = new Class2() itd. //a w klasach class Class1 //Class2 itd... { private $smarty; private $mdb2; function __construct() { $this->smarty = new Smarty(); $this->mdb2 =& MDB2::connect($CONFIG['db']['dsn']); //i juz w innych metodach uzywam $this->smarty i $this->mdb2 } } ?>
sa jeszcze dwie opcje:
4) tak jak w 1) tylko instrukcji global uzywam w METODZIE ktora takiego obiektu potrzebuje a nie w konstruktorze, wiec nie tworze wlasciwosci $this->smarty i $this->mdb2, wiec jak dobrze rozumuje obiekt nie ma takich wlasciwosci == jest mniejszy (?)
5) tak jak w 2) ale obiekty smarty i mdb2 przekazuje normalnie nie przez referencje &
ps. w tych klasach tez potrzebuje np. zmiennej $CONFIG w ktorej mam ustawienia konfiguracyjne, wiec to co wyzej opisalem tyczy sie nie tylko obiektow ale takze zwyklej zmiennej.
z gory dziekuje za odpowiedz