Odkąd do ZF wprowadzony został Zend_Application, wszystkie zasoby pakowałem do application.ini oraz Bootstrap-a, przez co oba pliki były strasznie zaśmiecone, o modułowości nie wspominając. Ponieważ przyszło mi pracować nad projektem, który będzie powielany w wielu konfiguracjach, postanowiłem podzielić zasoby na osobne klasy, które bez żadnego problemu będę mógł zmieniać w zależności od wymagań. Chciałbym jednak pozostawić część zasobów w application.ini, np konfigurację połączenia z bazą danych. I tutaj pojawiają się schody. Kombinunjąc jak to ze sobą połączyć wyszło mi takie coś w pliku index.php:
  1. $configPhp = array(
  2. 'pluginPaths' => array(
  3. 'App_Resource' => APPLICATION_PATH . '/resources'
  4. ),
  5. 'resources' => array(
  6. 'Config' => array(),
  7. 'Env' => array(),
  8. 'FrontController' => array(
  9. 'controllerDirectory' => APPLICATION_PATH . '/controllers'
  10. )
  11. )
  12. );
  13.  
  14. $configIni = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV, 'resources');
  15.  
  16. $application = new Zend_Application(APPLICATION_ENV);
  17. $application->setOptions($application->mergeOptions($configPhp, $configIni->toArray()))
  18. ->bootstrap()
  19. ->run();
W jaki sposób zrobić to prościej? Jest jakiś parametr, do którego mogę przypisać ścieżkę do application.ini?



edit
Nie było tematu. Wystarczyło zajrzeć do klasy Zend_Application i wszystko stało się jasne. Wystarczyło dodać klucz config i do niego przypisać ścieżkę do apllication.ini.

  1. $configPhp = array(
  2. 'pluginPaths' => array(
  3. 'App_Resource' => APPLICATION_PATH . '/resources'
  4. ),
  5. 'resources' => array(
  6. 'Config' => array(),
  7. 'Env' => array(),
  8. 'FrontController' => array(
  9. 'controllerDirectory' => APPLICATION_PATH . '/controllers'
  10. )
  11. ),
  12. 'config' => APPLICATION_PATH . '/configs/application.ini'
  13. );
  14.  
  15. $application = new Zend_Application(APPLICATION_ENV, $configPhp);
  16. $application->bootstrap()
  17. ->run();