Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zend Framework - Zend_Db::factory - środowisko
Forum PHP.pl > Forum > Przedszkole
kielich
Potrzebuje pomocy mianowicie już od 2 dni czytam próbuje zmieniam itd. postanowiłem zwrócić się o pomoc tutaj.
A więc
chce ustawić sobie środowisko Zend_Db::factory i wywala mi błędy .
Kod
[b]Fatal error[/b]:  Call to a member function toArray() on a non-object in [b]xxxxx[/b] on line [b]25[/b]


O to kod mojego index.php
  1. ...
  2. /** Autoload ZEND */
  3. require_once 'Zend/Loader/Autoloader.php';
  4. Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
  5.  
  6. // setup database
  7. $config = new Zend_Config_Ini('../application/configs/application.ini', 'production');
  8. Zend_Registry::set('config', $config);
  9.  
  10. // setup database
  11. $db = Zend_Db::factory($config->resources->adapter,
  12. $config->resources->params->toArray());
  13. Zend_Db_Table::setDefaultAdapter($db);
  14. Zend_Registry::set('db', $db);
  15. ...


oraz *.INI
  1. [production]
  2. phpSettings.display_startup_errors = 0
  3. phpSettings.display_errors = 0
  4. phpSettings.date.timezone = "Europe/London"
  5. includePaths.library = APPLICATION_PATH "/../library"
  6. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  7. bootstrap.class = "Bootstrap"
  8. appnamespace = "Application"
  9. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  10. resources.frontController.params.displayExceptions = 0
  11.  
  12. resources.db.adapter = "MYSQLi"
  13. resources.db.params.host = "localhost"
  14. resources.db.params.username = "xxx"
  15. resources.db.params.password = "xxx"
  16. resources.db.params.dbname = "xxx"
  17. resources.db.params.charset = "utf8"
  18. resources.db.isDefaultTableAdapter = true
  19. ...


Bede niezmiernie wdzięczny za pomoc ...
mortus
Zastąp to:
  1. // setup database
  2. $db = Zend_Db::factory($config->resources->adapter,
  3. $config->resources->params->toArray());
  4. Zend_Db_Table::setDefaultAdapter($db);
  5. Zend_Registry::set('db', $db);

tym:
  1. // setup database
  2. $db = Zend_Db::factory($config->resources->db->adapter,
  3. $config->resources->db->params->toArray());
  4. Zend_Db_Table::setDefaultAdapter($db);
  5. Zend_Registry::set('db', $db);

Powinno zadziałać.
kielich
Działa kurcze wielkie dzięki

Powiedz mi proszę jeszcze dlaczego Tak właśnie ma być jak napisał questionmark.gif!?!
możemy mi to wytłumaczyć questionmark.gif
mortus
Wynika to z budowy pliku ini. Dla przykładu:
Kod
[production]
resources.db.params.host = "localhost"

po wczytaniu do zmiennej $config za pomocą Zend_Config_Ini możemy wyłuskać poprzez:
  1. $config = new Zend_Config_Ini('plik/z/konfiguracja','sekcja');
  2. $host = $config->resources->db->params->host;

Wynika to z budowy klasy Zend_Config_Ini. Wczytuje ona dane rekursywnie, traktując kropkę jako początek zagnieżdżenia, przy czym każdy zagnieżdżony parametr jest obiektem klasy Zend_Config_Ini (stąd strzałeczki ->). Wystarczy?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.