Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Automatyczne dodawanie (require) plików własnych klas z katalogu library
Forum PHP.pl > Forum > PHP > Frameworki
Master Pain
Witam

Jak w temacie. Mam problem z włączeniem automatycznego dodawania plików klas.
Chcę w katalogu library trzymać własne klasy, np. własny kontroler akcji, rozszerzający Zend_Controller_Action, walidatory, pluginy i inne.

Przykładowo klasa Index_Controller_Action będzie w library/Index/Controller/Action.php
a klasa Index_Validate_Cokolwiek w library/Index/Validate/Cokolwiek.php

Czy da się to gdzieś w bootstrapie ustawić?

Pozdrawiam.
darko
Przechowywanie własnego kodu w folderze library nie jest najlepszym pomysłem.

Lepiej trzymać to w models i plugins.

Co do bootstrap, to ja ma tak i działa:

  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3. protected function _initAutoload()
  4. {
  5. // register autoloader
  6. $autoloader = new Zend_Application_Module_Autoloader(array(
  7. 'namespace' => '',
  8. 'basePath' => dirname(__FILE__),
  9. ));
  10.  
  11. // register preDispatch (AccessCheck) plugin:
  12.  
  13. $acl = new Model_CategoryAcl();
  14. $auth = Zend_Auth::getInstance();
  15.  
  16. $fc = Zend_Controller_Front::getInstance();
  17. $fc->registerPlugin(new Plugin_AccessCheck($acl, $auth));
  18.  
  19. return $autoloader;
  20. }
  21.  
  22. /**
  23.   * add layouts
  24.   */
  25. /*
  26.   protected function _initViewHelpers() {
  27.   $this->bootstrap("layout");
  28.   $layout = $this->getResource("layout");
  29.   $view = $layout->getView();
  30.   }
  31.   */
  32. }
Master Pain
Nie do końca zrozumiałeś o co mi chodzi bo odpowiedzi nie otrzymałem winksmiley.jpg

Pluginy - racja, application/plugins - zagalopowałem się wcześniej z wymienianiem klas.
Ale customowe walidatory, klasy (nie aplikacji, tylko zewnętrzne mechanizmy, np phpMailer) chcę trzymać w katalogu library - z definicji, jest to miejsce, gdzie trzymane są biblioteki wykorzystywane przez aplikację, która to z kolei jest w katalogu application.

Bootstrap też taki mam, nie o to pytałem winksmiley.jpg Chcę auto-require_once'ować (przepraszam za to słowo) pliki klas z katalogu library wg podanego przykładu w 1 poście.

Pozdrawiam.
batman
Prościej będzie dodać do apllication.ini takie coś:
  1. autoloaderNamespaces.app = "App_"
Oczywiście przy założeniu, że Twój katalog znajdujący się w library nazywa się App.

edit
No i nie zapominaj, że Twoje klasy muszą nazywać się App_Cos_Tam

~darko
A gdzie przechowujesz globalne klasy lub przeciążone metody ZF? Od tego jest właśnie library.
darko
może to Cię naprowadzi:
http://old.nabble.com/library-folder-autol...td23499750.html



batman na obecnym etapie projektu jeszcze do tego nie doszedłem, więc przepraszam za wprowadzanie w błąd, pewnie okaże się, że faktycznie tak to wygląda... póki co - trzymam w modelu
pgrzelka
masz folder library
-library
--zend
--zendx
--phpmailer
--fpdf

teraz wystarczy że zmienisz nazwę klasie phpmailer na Phmailer_Phpmailer
i tak się do niej odwołasz w kontrolerze lub modelu, tak samo jak np odwołujesz do np Zend_Controller_Action
dostosuj te dodatkowe biblioteki do nazewnictwa klas stosowanego przez zenda

mam nadzieje że dobrze zrozumiałem pytanie i dobrze odpowiedziałem winksmiley.jpg
Master Pain
@batman: dokładnie o to mi chodziło.
@pozostali: dzięki, ale nie trafiliście winksmiley.jpg
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.