Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] bootstrap i unset($front ... itd. ), Coś mi umyka z podstaw chyba, bo nie kumam.
jarek_bolo
post
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 12
Dołączył: 3.03.2008
Skąd: łódzkie

Ostrzeżenie: (0%)
-----


Witam

Czytam sobie właśnie quickstart'a o ZF i nie rozumiem jednej rzeczy.
Chodzi o index.php i bootstrap.php

Aby lepiej wytłumaczyć o co chodzi wkleję kod index.php i w miejscu includowania boostrapa, od razu też wkleję jego kod. Wyciąłem komentarze co by krócej było.

  1. <?php
  2. define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));
  3. set_include_path(APPLICATION_PATH . '/../library' . PATH_SEPARATOR . get_include_path());
  4.  
  5. require_once "Zend/Loader.php";
  6. Zend_Loader::registerAutoload();
  7.  
  8. try {
  9.    // require '../application/bootstrap.php'; kod bootstrapa wklejam poniżej
  10.    // ##############################################
  11. defined('APPLICATION_PATH')
  12.    or define('APPLICATION_PATH', dirname(__FILE__));
  13.  
  14. defined('APPLICATION_ENVIRONMENT')
  15.    or define('APPLICATION_ENVIRONMENT', 'development');
  16.  
  17. $frontController = Zend_Controller_Front::getInstance();
  18. $frontController->setControllerDirectory(APPLICATION_PATH . '/controllers');
  19. $frontController->setParam('env', APPLICATION_ENVIRONMENT);
  20.  
  21. Zend_Layout::startMvc(APPLICATION_PATH . '/layouts/scripts');
  22.  
  23. $view = Zend_Layout::getMvcInstance()->getView();
  24. $view->doctype('XHTML1_STRICT');
  25.  
  26. $configuration = new Zend_Config_Ini(APPLICATION_PATH . '/config/app.ini', APPLICATION_ENVIRONMENT);
  27.  
  28. $dbAdapter = Zend_Db::factory($configuration->database);
  29.  
  30. Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
  31.  
  32. $registry = Zend_Registry::getInstance();
  33. $registry->configuration = $configuration;
  34. $registry->dbAdapter     = $dbAdapter;
  35.  
  36. unset($frontController, $view, $configuration, $dbAdapter, $registry);
  37.  
  38.    // ##############################################
  39.  
  40. } catch (Exception $exception) {
  41.    echo '<html><body><center>'
  42.       . 'An exception occured while bootstrapping the application.';
  43.    if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production') {
  44.        echo '<br /><br />' . $exception->getMessage() . '<br />'
  45.           . '<div align="left">Stack Trace:'
  46.           . '<pre>' . $exception->getTraceAsString() . '</pre></div>';
  47.    }
  48.    echo '</center></body></html>';
  49.    exit(1);
  50. }
  51.  
  52. Zend_Controller_Front::getInstance()->dispatch();
  53. ?>


W lini 18 tworzymy pierwszy raz Front Controller, robimy na nim dwa ustawienia, katalogu i zmiennej.
Następnie w linii 24 tworzymy obiekt View, też robimy jakieś ustawienia.
Tworzone są jeszcze obiekty konfiguracji i uchwyt do bazy danych.

[pisząc ten tekst powoli zaczynam chyba sam rozumieć, ale kontynuuję dalej co by dostać odpowiedź potwierdzającą czy dobrze rozumiem no i może dla potomnych się przyda]

I teraz obiekty konfiguracji i uchwyt do bazy są dodawane do Rejestru, ale FrontControler oraz View do rejestru dodane nie są, a mimo wszystko też są niszczone :/
Trochę byłem zmieszany tym, ale zacząłem szperać po API no i wymysliłem, że powód dla którego można skasować te obiekty jest taki, że zostały one utworzone na podstawie klas statycznych (Front na pewno).

I teraz czy dobrze sobie to tlumacze, ze z chwila zapoczątkowania przejścia przez aplikację (wchodzimy do index, itd., uruchmiamy parser php i adresowanie pamięci na podstawie kodu) odwołania do klas statycznych przy pomocy "::", bądź za pomocą singeltonowego obiektu takiej klasy i wykonywanie metod, ustawianie właściwości powodują zapisanie tych danych na poziomie klasy, która to ma przydzieloną swoją fizyczną pamięć?

No bo z obiektami normalnych klas, wiadomo, każdy obiekt to inna komórka pamięci. Dobrze to mniej więcej rozumuję questionmark.gif To są pewnie podstawy obiektówki tiredsmiley.gif


--------------------
"Jeden człowiek nie zmieni świata, ale jeden człowiek może przekazać informację która zmieni świat." - David Icke
| PAMIĘTAJ, JESTEŚ POLAKIEM !!! |
Jam jest Polska, Ojczyzna Twoja, ziemia Ojców, z której wzrosłeś. Wszystko, czym jesteś, po Bogu - mnie zawdzięczasz!!
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:30