Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] includowanie pluginow
JarCzeS
post
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
Go to the top of the page
+Quote Post
mike
post
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.
Go to the top of the page
+Quote Post
JarCzeS
post
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
Go to the top of the page
+Quote Post
tiraeth
post
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ć smile.gif

Ten post edytował tiraeth 11.07.2008, 14:59:20
Go to the top of the page
+Quote Post
JarCzeS
post
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';
Go to the top of the page
+Quote Post
mike
post
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
Go to the top of the page
+Quote Post
JarCzeS
post
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 smile.gif pzdr

Ten post edytował JarCzeS 11.07.2008, 15:19:49
Go to the top of the page
+Quote Post
Martio
post
Post #8





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


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!
Go to the top of the page
+Quote Post
mike
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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
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: 20.08.2025 - 09:09