php developer & web designer
Nowy projekt (a wÅ‚aÅ›ciwie dwa) majÄ… zostać oparte o Zend Framework. Niby wszystko piÄ™knie – no bo mamy “zajefajny” framework, który zrobi niemal wszystko (brakuje tylko faktu, że kawy nie parzy
).
Chcąc mieć projekty pięknie od początku wykonane z użyciem Zend_Tool i Zend_Application generuje strukturę dokumentu. Przy czym, w ZF 1.8 zaleca się trzymanie wszystkich ustawień w konfiguracyjnym pliku INI (w celu odchudzenia klasy Boostrap).
WracajÄ…c do projektu – od razu zakÅ‚adam panel administracyjny – tworzÄ™ osobny moduÅ‚.
Moduł ten będzie obsługiwał kontrolę dostępu i autentyfikację opartą o bazę danych. Żeby nie powielać kodu dziesiątki razy chcę stworzyć plugin kontrolera, który sprawdzi czy a. user jest zalogowany; b. ma dostęp do zasobu. I tu zonk.
W dokumentacji jest napisane, że w pliku INI można podać listę pluginów:
plugins: array of front controller plugin class names. The resource will instantiate each class (with no constructor arguments) and then register the instance with the front controller.
W przykładzie wygląda to tak:
resources.frontController.plugins.foo = "My_Plugin_Foo" resources.frontController.plugins.bar = "My_Plugin_Bar"
Niby wszystko jasne, tworzÄ™ dwie klasy dziedziczÄ…ce po Zend_Controller_Plugin_Abstract… Teoretycznie powinienem mieć możliwość wywoÅ‚ania metody preDispatch(), która może sprawdzić czy użytkownik jest zalogowany i czy ma prawa do zasobu. JeÅ›li nie to, w zależnoÅ›ci od sprawdzenia, albo przekierować go na formularz logowania, albo wyÅ›wietlić stronÄ™ z informacjÄ… o braku dostÄ™pu.
Teoretycznie – bo ten kod nie dziaÅ‚a (błąd Å‚adowania klasy, mimo że jest ona w include_path)!
Co wiÄ™cej straciÅ‚em dziÅ› 2 godziny na znalezienie “obejÅ›cia”. ObejÅ›cie to nic innego jak stworzenie metody _initPlugins() w Bootstrap i po staremu dodanie pluginów do front kontrolera:
protected function _initPlugins()
{
$front = $this->bootstrap('frontController');
$front->registerPlugin(new My_Plugin_Foo());
}
Przy okazji przejrzałem dokładniej dokumentację ZF i takie oto wnioski przyszły mi do głowy:
Do kolejnego razu! (oby można byÅ‚o powiedzieć coÅ› in-plus…)
8 komentarze do "Kolejne rozczarowanie Zend Framework"
W dokumentacji “JEST NAPISANE” a nie w dokumentacji pisze
. Pozdrawiam. Bede wracal po wiecej wpisow o ZF.
a wystarczyÅ‚o dodać namespace do autloader’a, w application.ini
autoloadernamespaces.my = “Myl”
i wszystko ładnie działa
@felixd – dzieki juz poprawia, tekst byl pisany na szybko…
@milus – no wlasnie nie dzialalo z namespace’ami cos za bardzo :/
hmm, aż sprawdziłem. wersja zf 1.8.1
mój config:
autoloadernamespaces.kamil = “Kamil”
includePaths.library = APPLICATION_PATH “/../library”
includePaths.models = APPLICATION_PATH “/models”
bootstrap.path = APPLICATION_PATH “/Bootstrap.php”
bootstrap.class = “Bootstrap”
resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”
resources.frontController.plugins.test = “Kamil_Controller_Plugin_Test”
no i plugin:
class Kamil_Controller_Plugin_Test extends Zend_Controller_Plugin_Abstract
{
public function preDispatch (Zend_Controller_Request_Abstract $request)
{
var_dump(“jestem tu i dziala”); die;
}
}
no i działa bez problemu
Hm… Niestety ale przeważnie takie pÅ‚ytkie opinie padajÄ… z ust osób które nie rozumiejÄ… dziaÅ‚ania frameworka.
To ze nie “rozumie dzialania frameworka” to nie dokonca oznacza plytka opinie.
Od dawna sledze go i uzywam w razie potrzeby. Ale dopiero teraz widze jego niedociagniecia – braki w dokumentacji i api, nieaktualne przyklady, etc.
Oznacza to tez tyle ze sie troche zawiodlem na ZF.
Niedociągnięcia ma każdy projekt. Uważam, że akurat dokumentacja jest bardzo dobra i można na jej bazie sporo się dowiedzieć i zrozumieć.
Å»adna dokumentacja nie opisuje wszystkiego i na tyle dokÅ‚adnie by zadowoliÅ‚o każdego, a zwÅ‚aszcza w sytuacji kiedy osobie zainteresowanej siÄ™ spieszy bo dany kod używa “w razie potrzeby”.
Rada, jeżeli mogę oczywiście, zdecyduj się na jeden framework i pisz w nim wszystko i non-stop. Wtedy dopiero będziesz mógł obiektywnie i kompetentnie pisać o jego wadach i niedociągnięciach. Na razie zwyczajnie frustrujesz się, że brakuje ci czasami wiedzy.
ZF dla mnie wymiata i czekam na kolejne releasy.
Btw. wg. roadmapy następny major ma mieć poprawioną dokumentacje. Może będzie lepiej, chociaż ja i tak uważam, że jest ok.
Pozdr
M
Å»e tak siÄ™ przypierdzielÄ™, uwierzytelnianie, a nie “autentyfikacjÄ™”, nie ma takiego sÅ‚owa w jÄ™zyku polskim
A poważnie, to trzeba zacząć Cię subskrybować jako, że zaczynam przygody z ZF
Pozdrawiam Ciepło!
Napisz komentarz