[ sekretar @ 12.03.2009. 09:17 ] @
| Pozdrav,
nemam ideje kako ovo da rjesim.
Ideja je slijedeca, u jednom direktoriju imam .php fajlove sa klasama. Svaki fajl jedna klasa.
Interesuje me kako mogu kada vec procitam koje fajlove imam automatski kreirati instancu klase iz tog fajla?
Da bih sebi pojednostavio stvari klasa ima isti naziv kako i fajl u kojem se nalazi
Code:
$handle=opendir($this->klase_direktorij);
while (false!==($file = readdir($handle)))
{
if (substr($file,0,6)=='klasa_')
//Ovdje bih trebao kreirati klasu koja se zove kao i $file
}
|
[ dakipro @ 12.03.2009. 09:22 ] @
mozda nesto:
$$className = new $nazivKlasePoImenuFajla();
Nisam probao dal ovo ovako radi, lupam, ali ti mozda da ideju
[ kazil @ 12.03.2009. 09:39 ] @
Pogledaj kako je u Zend Framework-u reseno automatsko ucitavanje klasa. Prilazem skriptu uz poruku.
[ dakipro @ 12.03.2009. 10:17 ] @
preleteo sam preko ovih zendovih klasa, i ne znam da li je to ono sto sekretar-u treba, da se ucitaju sve postojece klase i da im se kreiraju instance?
Pre bih reko da su ove klase nesto nalik __autoload() funkciji, da same inkluduju klasu kad je ti zatrazis u kodu. Ili nisam dovoljno dobro pogledao fajl?
[ kazil @ 12.03.2009. 10:21 ] @
Tacno tako, ovo je autoloader za zf :) al mozda posluzi za ideju kako da se krene :)
[ sekretar @ 12.03.2009. 10:29 ] @
Sredio sam, hvala momci...
Evo kako radi...
u baznoj klasi napunim array sa imenima fajlova koji mi se nalaze u direktoriju
Kasnije kada mi trebaju instance klasa onda ih kreiram ovako
foreach ($konekcija->klase as $mojeklase)
{
include($konekcija->klase_direktorij."/".$mojeklase);
$nazivKlasePoImenuFajla = substr($mojeklase,0, -4); //:)))
$$className = new $nazivKlasePoImenuFajla;
$linkovi = $$className->daj_linkove();
.........
[ rajkoBekrija @ 10.04.2009. 00:31 ] @
Hm cini mi se da ti je glupo rjesenje pored __autoload funkcije, funkcija koja se poziva svaki put kada pokusas da napravis instancu objekta klase koja nije do tada definisana.
Code:
function __autoload($ClassName){
require('moje_klase/'.$ClassName.'.php');
}
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.