[ milosicko @ 03.11.2011. 23:36 ] @
Dakle ovako,koristim codeigniter framework za jedan projekat,i posto u njemu koristim "packages","modules (HMVC)" i "drivers" pokusao sam radi cistijeg koda da kreiram sledece instance:

Code:

$this->MODULE = $this;
$this->PACKAGE = $this;


To je da bih mogao kad u kodu napisem $this->PACKAGE->load->library('test') i kad posle pozovem $this->MODULE->test->method() da znam da je ta klasa u stvari smestena u PACKAGE a ne u APP_PATH/application/libraries... U sustini,cisto zbog preglednijeg koda.

E sad,hocu da sprecim konflikt(preklapanje) izmedju:

$this->MODULE->lib->method()
i
$this->lib->method()

tj. hocu da nekako "odvojim" instance $this i $this->MODULE ali ne znam kako...

Treba da dobijem mogucnost da uradim recimo:
Code:

$this->MODULE = $this;
$this->PACKAGE = $this;

$this->variable = "1";
$this->MODULE->variable = "2" 

print $this->MODULE->variable;
print $this->variable;

... i da dobijem razlicite rezultate.

Probao sam da umesto "$this->MODULE = $this" stavim "$this->MODULE = clone $this" pa da nakon kloniranja definisem variable nadajuci se da cu nadalje moci nesmetano da koristim te dve instance ali sve se svodi na isto,tj ne vidim razliku izmedju ta dva slucaja...

Ima li predloga? :)
[ milosicko @ 03.11.2011. 23:50 ] @
Izgleda da je odgovor negde "dublje" u HMVC strukturi... Kloniranjem ipak dobijam ispravne rezultate ali za obicne promenljive dok za sve klase ucitane preko instance $this->load dobijam pogresan rezultat :(

kad ucitam library ovako:

Code:

$this->MODULE = clone $this;
$this->MODULE->load->library('lib');


i posle pozovem get_class($this->MODULE->lib) dobijam isti rezultat kao kad pozovem get_class($this->lib) sto po svoj logici nebi trebalo tako da bude :(