Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] includowanie pluginow
Forum PHP.pl > Forum > PHP > Frameworki
JarCzeS
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
mike
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.
JarCzeS
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
tiraeth
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ć smile.gif
JarCzeS
tak
Kod
require_once 'Zend/Controller/Plugin/Abstract.php';
mike
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
JarCzeS
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 smile.gif pzdr
Martio
Cytat(mike @ 11.07.2008, 16:02:02 ) *
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!
mike
Cytat(Martio @ 14.07.2008, 12:08:16 ) *
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.
Cytat(Martio @ 14.07.2008, 12:08:16 ) *
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 ...
Cytat(Martio @ 14.07.2008, 12:08:16 ) *
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.
Cytat(Martio @ 14.07.2008, 12:08:16 ) *
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 tongue.gif
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.