Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Automatyczne dodawanie (require) plików własnych klas z katalogu library
Master Pain
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


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. }


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Master Pain
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


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.
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Powód edycji: [batman]:


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


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

Ten post edytował darko 20.11.2009, 16:11:44


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
pgrzelka
post
Post #6





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


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


--------------------
Go to the top of the page
+Quote Post
Master Pain
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


@batman: dokładnie o to mi chodziło.
@pozostali: dzięki, ale nie trafiliście winksmiley.jpg
Go to the top of the page
+Quote Post

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 - 03:05