Kilka pytań dotyczących podstaw Zend Framework 1.9.Jak działa aplikacja Zend/Bootstrapping?
I przestrzegać instrukcji QuickStart i zasadniczo polega ładującego,
a. from index.php:
b. Następnie w bootstrap.php, mam
protected function _initAutoload() { $autoloader = new Zend_Application_Module_Autoloader(array("namespace" => "Default_", "basePath" => dirname(__FILE__),)); return $autoloader; } protected function _initDoctype() { $this->bootstrap("view"); $view = $this->getResource("view"); $view->doctype("XHTML1_STRICT"); }
Na początek kilka rzeczy nie rozumiem:
się. Jeśli użytkownik uzyskuje dostęp do witryny za pośrednictwem domyślnego indeksu.php, czy oznacza to, że ładowanie początkowe (a także cały kod w pliku index.php, w tym ustawienie środowiska itp., Zostanie ominięte?)
b. Nie ma miejsca, które wyraźnie wywoływałoby metody Bootstrapa:
_initAutoload()
lub_initDoctype()
. Więc kiedy niejawnie przywoływane są te metody?c. Ponieważ w index.php, już "przekazałem" plik konfiguracyjny
'/configs/application.ini'
do konstruktora Zend_Application, czy istnieje sposób na odzyskanie wpisów config gdzie indziej?W mojej aplikacji, muszę pracować z różnymi bazami danych (więc nie mogę po prostu użyć
resources.db.*
). Tak więc w tym samym pliku application.ini mam np.custdb.adapter = "PDO_MYSQL" custdb.params.host = "localhost" custdb.params.username = "username" custdb.params.password = "password" custdb.params.dbname = "custdb"
Jaka jest najlepsza praktyka zarządzania adapterem DB?
a. Czy jest możliwe (i powinienem) utworzyć adapter DB w index.php OR Bootstrap.php i pobrać go gdzie indziej, gdy jest potrzebny (i jak)?
b. Lub jest możliwe (i powinienem) po prostu pobrać wpisy konfiguracyjne w innym miejscu (jak?) I utworzyć instancję adaptera DB w razie potrzeby?
Dzięki!
Dzięki za odpowiedzi! 2b. Niestety, Teoria Operacji pozostawiła mnie bardziej zagubioną.W tym przypadku mówiono o $ bootstrap-> bootstrap ("foo"); $ bootstrap-> bootstrap (array ('foo', 'bar')); $ bootstrap-> bootstrap(); , ale żaden z nich nie był w index.php. (O ile $ application-> bootstrap() -> run() nie robi tak samo jak $ bootstrap-> bootstrap()?) 2c. Ponieważ już przekazałem nazwę pliku konfiguracyjnego do konstruktora Zend_Application, czy istnieje sposób na odzyskanie instancji Zend_Config z $ application (do umieszczenia w rejestrze) zamiast tworzenia nowego Zend_Config_Ini na tym samym pliku .ini? –
Och, jeszcze jedno. Jak powiedziałeś, każde żądanie jest przekierowywane do index.php. Czy to oznacza, że jakikolwiek tam kod (konfiguracja czytania, tworzenie instancji Zend_Application, wywoływanie $ bootstrap.run()) zdarza się raz za razem? –
Tak. Cała aplikacja jest bootstrapowana i uruchamiana przy każdym żądaniu. HTTP jest protokołem bezstanowym, jedyną rzeczą, która przetrwała w przypadku wszystkich żądań, jest $ _SESSION. Jeśli martwisz się o wydajność, zdecydowanie zalecamy wdrożenie pamięci podręcznej stron, która może wyświetlać stronę bez tworzenia pełnej aplikacji. –