Bootstraping je proces inicijalizovanja sistema - on se prvo izvrsava. U application folderu je on neophodan. Taj bootstrap inicijalizuje neke stvari koje su vezane za sve delove aplikacije. Bootstrap na nivou modula nije neophodan. Tu mozes da izvrsis inicijalizaciju odredjenog modula, nakon sto se inicijalizuje ceo sistem.
To sto je tebi trenutno bootstrap prazan, to ne znaci da on ne radi nista, ili da ce stalno ostati prazan.
Postoje neki ugradjeni resursi koje ZF automatski bootstrapuje, kao sto je FrontController ili sesija. Ostali najcesci su baza i layout.
Ja licno najcesce sam bootstrapujem dodatne stavke za autoloader i neka podesavanja za Zend_View.
Stvari koje zelimo da sami inicijalizujemo se definisu kao metode unutar tih Bootstrap klasa. Svaka metoda koja pocinje sa _init bice izvrsena automatski. Redosled izvrsavanja je sledeci:
- prvo se izvrsavaju nase custom _init metode, top to bottom, tj. onim redom kojim se nalaze u Bootstrap klasi, iduci od pocetka klase prema kraju.
- na kraju se izvrsavaju te automagicne ugradjene metode.
Evo jedan primer inicijalizovanja Z_V-a:
Code (php):
public function _initViewHelpers()
{
// view nam zavisi od layout-a
// a kako se layout sam inicijalizuje na samom kraju, moramo ZF-u reci da ga inicijalizuje
// pre reda. To govorimo sa sledecom linijom:
$this->bootstrap('layout');
// svaka _init metoda koja return-uje nesto, nam je dostupno preko $this->getResource(ime_resursa);
// tako recimo mozemo uzeti inicijalizovani layout resurs:
$this->_layout = $this->getResource('layout');
// iz layout-a uzmemo view
$this->_view = $this->_layout->getView();
// na view-u postavimo recimo doctype
$this->_view->doctype('XHTML1_STRICT');
// neke meta tagove
$this->_view->headMeta()->appendHttpEquiv('Content-type', 'text/html;charset=utf-8');
// postavimo glavni naslov sajta
$this->_view->headTitle('Moj super fensi sajt u ZF-u');
// itd..
$this->_view->headTitle()->setSeparator(' / ');
}
Na ovaj nacin smo dobili da ce na celom sajtu (ako ne pregazimo negde dalje, jel), doctype biti XHTML1 strict, uvek cemo imati content-type podesen, kao i neki glavni naslov sajta...
Ja sam ovu funkciju nazvao _initViewHelpers - bitno je samo da pocinje sa _init, sto se tice ZF-a, moglo je biti i _initSkuvajMiKafu - pocinje sa _init, skuvace mi kafu :)
Na kraju: bootstrap je mocan i moze puno toga da odradi, ima dosta delova sa kojima ni ja jos nisam nacisto. Pretumbaj dokumentaciju za detaljnije :)
Obrati paznju da tokom bootstrapovanja, ti jos ne mozes znati recimo koji je modul ili koja akcija kog kontrolera pozvana - u toku inicijalizovanja sistema, ZF to jos nije odredio.
Edit: malo razumljivije u return-ovanju resursa (lakse mi je preko koda nego recima :D):
Code (php):
public function _initNekaInitMetoda()
{
return "Nesto";
}
public function _initNekaDrugaInitMetoda()
{
$resurs = $this->getResource('nekainitmetoda'); // $resurs ima vrednost "Nesto"
}
Znaci, resurs dobija ime tako sto se _init odbaci, sve posle toga se prebaci u lowercase, a vrednost tog resursa je to sto ta metoda vraca.
[Ovu poruku je menjao kazil dana 15.06.2010. u 19:25 GMT+1]