![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
mam problem z includowaniem pluginow, jezeli dany plugin znajduje sie w katalogu Zend/Controllers/Plugins/ to wszystko dziala ok
rejestruje go przez: Kod $frontController->registerPlugin(new Zend_Controller_Plugin_Texts()); chcialbym aby pluginy znajdowaly sie w katalogu aplication/controllers/plugins. Moj inlude wyglada tak: Kod set_include_path('.' . PATH_SEPARATOR . './_cms/library' . PATH_SEPARATOR . './_cms/application/models/' . PATH_SEPARATOR . './application/controllers/plugins/' . PATH_SEPARATOR . get_include_path()); i probuje go zarejestrowac tak: Kod $frontController->registerPlugin(new Texts()); a oto moj error Kod <b>Catchable fatal error</b>: Argument 1 passed to Zend_Controller_Front::registerPlugin() must be an instance of Zend_Controller_Plugin_Abstract, instance of Texts given, called in ........./index.php on line 30 and defined in <b>......./library/Zend/Controller/Front.php</b> on line <b>699</b> zendem zajmuje sie od niedawna wiec prosze o wyrozumialosc |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Problem nie leży w niepoprawnym includowaniu pluginów tylko w tym, że Twój plugin Texts jest niepoprawnie napisany.
Powinien dziedziczyć po klasie Zend_Controller_Plugin_Abstract a nie robi tego. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kod class Texts extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { } } wyglada tak, przeciez jezeli sie znajduje w katalogu plugins w zendzie to dziala |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A czy wcześniej dołączasz Zend/Controller/Plugin/Abstract.php? Skoro klasa dziedziczy po abstrakcyjnej klasie pluginów ZF, to trzeba ową abstrakcję załadować
![]() Ten post edytował tiraeth 11.07.2008, 14:59:20 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
tak
Kod require_once 'Zend/Controller/Plugin/Abstract.php';
|
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zend Framework to taki ułomny twór, że wymusza bezsensowne nazwy klas/interfejsów.
Jeśli przenosisz klasę w inną lokalizację musisz zmienić jej nazwę, głupie nie? Zend Framework PHP Coding Standard :: Naming Conventions |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
zmianilem nazwe klasy na haha2 i dostaje error ze nie mogl jej znalezc
Kod [b]Warning[/b]: Zend_Loader::include_once(haha2.php) [[url="zend-loader.include-once"]zend-loader.include-once[/url]]: failed to open stream: No such file or directory in [b]/_cms/library/Zend/Loader.php[/b] on line [b]83[/b] [b]Warning[/b]: Zend_Loader::include_once() [[url="function.include"]function.include[/url]]: Failed opening 'haha2.php' for inclusion (include_path='.:./_cms/library:./_cms/application/models/:./application/controllers/plugins/:.:/usr/local/lib/php') in [b]/_cms/library/Zend/Loader.php[/b] on line [b]83[/b] [b]Fatal error[/b]: Class 'haha2' not found in [b]index.php[/b] on line [b]30[/b] juz dziala zapomnialem zmienic nazwy pliku na haha2 dzieki za szybka odpowiedz ![]() Ten post edytował JarCzeS 11.07.2008, 15:19:49 |
|
|
![]()
Post
#8
|
|
Grupa: Zablokowani Postów: 167 Pomógł: 2 Dołączył: 15.02.2004 Ostrzeżenie: (30%) ![]() ![]() |
Zend Framework to taki ułomny twór, że wymusza bezsensowne nazwy klas/interfejsów. Jeśli przenosisz klasę w inną lokalizację musisz zmienić jej nazwę, głupie nie? Zend Framework PHP Coding Standard :: Naming Conventions ZF nie jest ułomny, a nazwy klas nie są bezsensowne! Jest to bardzo sprytne rozwiązanie zaczerpnięte z PEAR, by zastąpić brakujące w PHP przestrzenie nazw. Poza tym druga rzecz to po nazwie klasy znasz jej lokalizację! Bardzo dobre rozwiązanie! Przede wszystkim bardzo praktyczne! Ileż to w czasie pracy zawodowej pracując nad różnymi frameworkami - przeważnie autorskimi - naszukałem się klas! Bo sobie ktoś nazwie "Db" i szukaj jej na wielu poziomach w wielu katalogach bibliotecznych! A tak po nazwie znasz od razu lokalizację klasy w systemie plików! |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
ZF nie jest ułomny, a nazwy klas nie są bezsensowne! Są bezsensowne ponieważ w nazwie są zwarte nieistotne informacje. Nazwy są długie i trudne do zapamiętania.Jest to bardzo sprytne rozwiązanie zaczerpnięte z PEAR, by zastąpić brakujące w PHP przestrzenie nazw. Poza tym druga rzecz to po nazwie klasy znasz jej lokalizację! A dlaczego miałbym znać lokalizację po nazwie? Gdyby ZF był dobrze zorganizowany to wiedziałbyś, że bibliotemi masz tu, pluginy masz tu, a dowolne libsy masz tu. A, że ZF to śmietnik ...Bardzo dobre rozwiązanie! Przede wszystkim bardzo praktyczne! Taaa, bardzo praktyczne. Związywać nazwę klasy z jej lokalizacją. To teraz przenieś klasą w inne miejsce. Aplikacja się sypnie.Ileż to w czasie pracy zawodowej pracując nad różnymi frameworkami - przeważnie autorskimi - naszukałem się klas! Bo sobie ktoś nazwie "Db" i szukaj jej na wielu poziomach w wielu katalogach bibliotecznych! A tak po nazwie znasz od razu lokalizację klasy w systemie plików! Rozwiązanie z takim debilnymi nazwami klas ma tylko ZF, jakoś inne frameworki nazywają klasy normalnie i wszystko działa. W PHP 5.3 będą przestrzenie nazw. Zobaczymy czy twórcy ZF przepiszą frameworka ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 09:09 |