abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 21:00 | IT novinky

    Od 3. listopadu 2025 budou muset nová rozšíření Firefoxu specifikovat, zda shromažďují nebo sdílejí osobní údaje. Po všech rozšířeních to bude vyžadováno někdy v první polovině roku 2026. Tyto informace se zobrazí uživateli, když začne instalovat rozšíření, spolu s veškerými oprávněními, která rozšíření požaduje.

    Ladislav Hagara | Komentářů: 0
    dnes 17:11 | Humor

    Jste nuceni pracovat s Linuxem? Chybí vám pohodlí, které vám poskytoval Microsoft, když vás špehoval a sledoval všechno, co děláte? Nebojte se. Recall for Linux vám vrátí všechny skvělé funkce Windows Recall, které vám chyběly.

    Ladislav Hagara | Komentářů: 1
    dnes 16:11 | Komunita

    Společnost Fre(i)e Software oznámila, že má budget na práci na Debianu pro tablety s cílem jeho vyžívání pro vzdělávací účely. Jako uživatelské prostředí bude použito Lomiri.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | IT novinky

    Proběhla hackerská soutěž Pwn2Own Ireland 2025. Celkově bylo vyplaceno 1 024 750 dolarů za 73 unikátních zranitelností nultého dne (0-day). Vítězný Summoning Team si odnesl 187 500 dolarů. Shrnutí po jednotlivých dnech na blogu Zero Day Initiative (1. den, 2. den a 3. den) a na YouTube.

    Ladislav Hagara | Komentářů: 3
    včera 13:33 | Komunita

    Byl publikován říjnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Pracuje se na podpoře M3. Zanedlouho vyjde Fedora Asahi Remix 43. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 0
    25.10. 15:44 | Zajímavý software

    Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.

    Ladislav Hagara | Komentářů: 0
    25.10. 05:11 | Zajímavý článek

    Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.

    karkar | Komentářů: 9
    24.10. 19:55 | Nová verze

    Typst byl vydán ve verzi 0.14. Jedná se o rozšiřitelný značkovací jazyk a překladač pro vytváření dokumentů včetně odborných textů s matematickými vzorci, diagramy či bibliografií.

    Ladislav Hagara | Komentářů: 0
    24.10. 13:33 | Bezpečnostní upozornění

    Specialisté společnosti ESET zaznamenali útočnou kampaň, která cílí na uživatele a uživatelky v Česku a na Slovensku. Útočníci po telefonu zmanipulují oběť ke stažení falešné aplikace údajně od České národní banky (ČNB) nebo Národní banky Slovenska (NBS), přiložení platební karty k telefonu a zadání PINu. Malware poté v reálném čase přenese data z karty útočníkovi, který je bezkontaktně zneužije u bankomatu nebo na platebním terminálu.

    Ladislav Hagara | Komentářů: 21
    24.10. 13:22 | Upozornění

    V Ubuntu 25.10 byl balíček základních nástrojů gnu-coreutils nahrazen balíčkem rust-coreutils se základními nástroji přepsanými do Rustu. Ukázalo se, že nový "date" znefunkčnil automatickou aktualizaci. Pro obnovu je nutno balíček rust-coreutils manuálně aktualizovat.

    Ladislav Hagara | Komentářů: 13
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (47%)
     (20%)
     (19%)
     (23%)
     (17%)
     (21%)
     (17%)
     (18%)
    Celkem 279 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Zend framework II

    31.3.2008 09:03 | Přečteno: 2815× | poslední úprava: 31.3.2008 10:03

    Zend framework - kontrolery

    Minule jsem mimo jiné napsal něco v tom smyslu, že příchozí požadavky jsou obsluhovány front controllerem, který se zjednodušeně řečeno stará o zavolání příslušného kontroleru. Než se budu zabývat něčím dalším, bylo by asi dobré si aspoň trochu vyjasnit, co přesně se při zpracování požadavku děje.

    Celý proces je dobře znázorněn na následujícím obrázku (převzatý z manuálu Zendu):

    Je zde v podstatě znázorněno, jak je v Zendu implementován (třída Zend_Controller_Front) návrhový vzor Front Controller. Příchozí požadavek je obvykle reprezentován třídou Zend_Controller_Request_Http (obecně třídou Zend_Controller_Request_Abstract, třída Http je její potomek), která kromě parametrů obsahuje informace o jménu kontrolertu a akce, která má tento požadavek zpracovávat (a některé další informace). Zend_Controller_Front je singleton, což znamená, že vždy existuje jen jedna jeho instance. Tato třída také, mimo jiné, registruje pluginy, které umožňují jednoduše rozšiřovat její možnosti bez nutnosti vytváření jejích potomků. Pro obsloužení požadavku se na instanci této třídy obvykle volá metoda dispatch(), která se skládá ze tří částí:

    Jako první je tedy zavolán router, jehož úkolem je zjistit, jaký kontroler a akce mají požadavek obsloužit. Minule jsem psal, že toto určení probíhá na základě URI podle klíče aplikace/modul/kontroler/akce. Tento proces ale může být složitější, můžeme např. sami definovat pravidla (pomocí Zend_Controller_Router_Rewrite), na jaký konroler se má daná URI mapovat a pod. (o tomto podrobněji někdy jindy). Proces routování může pro každý požadavek proběhnout jen jednou.

    Následuje dispatching, což je proces, při němž je z požadavku zjištěn název kontroleru a akce, vytvoří se instance kontroleru (který musí být potomkem třídy Zend_Controller_Action) a na ní se zavolá příslušná metoda. Tento proces, na rozdíl od routingu, může pro daný požadavek proběhnutou vícekrát. Probíhá ve smyčce tak dlouho, dokud není na požadavku nastaven atribut isDispatched na hodnotu true (po vstupu do smyčky je tento atribut automaticky nastaven na true, takže pokud nechceme požadavek předávat dalšímu kontroleru, nemusíme se o nic starat). Naopak další cyklus smyčky nastane např. když v nějaké akci kontroleru zavoláme metodu _forward(). Jak je vidět z obrázku, dispatchingu samotnému předchází ještě predispatching a před vyhodnocením, zda bude smyčka pokračovat dalším cyklem se volá postdispatching. Tyto metody se ale nevolají na front controlleru, ale action controlleru (potomek Zend_Controller_Action) nebo na pluginech. Stručně řečeno, pluginy kontroleru jsou potomky třídy Zend_Controller_Plugin_Abstract. Jak bylo řečeno v úvodu, můžeme je zaregistrovat u front controlleru a tak rozšiřovat jeho možnosti (implementováním metod preDispatch() a postDispatch() a dalších).

    Vše si ukážeme na krátkém příkládku. Vytvoříme kontroler, který bude obsluhovat přístup k nějaké části aplikace, která bude přístupná jen pro přihlášené uživatele. V kontroleru implementujeme metodu preDispatch(), která před tím než bude na kontroleru vykonána nějaká akce zkontroluje, zda je uživatel přihlášený (o tom, jaké Zend poskytuje možnosti pro autorizaci a autentizaci taky snad někdy jindy:-). Pokud uživatel nebude přihlášený, přesměrujeme jej na přihlašovací stránku:

    <?php
    class RestrictedController extends Zend_Controller_Action
    {  
      public function preDispatch($request){
        $auth = Zend_Auth::getInstance();
        if(!$auth->hasIdentity()){
          $this->_redirect('auth/login');
        }
      }
      /*
      public function indexAction(){
        //something
      }
      */
    }
    
    Měli bychom ještě implementovat alespoň index akci, ale jelikož zatím uživatel nemá žádný způsob jak se přihlásit, tak je to v tuto chvíli zbytečné, přes predispatching se stejně nedostaneme. Potřebujeme ale vytvořil AuthController. Nejběžnější způsob autentizace je vyplnění formuláře s loginem a heslem. O formulářích ale taky někdy jindy, takže zatím akci login taky dělat nebudeme. Pokud framework na kontroleru nenajde požadovanou akci, pak na kontroleru zavolá metodu __call(). Implementujeme tedy aspoň tuto metodu, která zobrazí nějakou stránku, že požadovaná stránka ještě není hotová (místo toho bychom mohli použít třeba Zend_Controller_Plugin_ErrorHandler, ale to bychom musel ještě vyrobit ErrorController a zbytečně by se nám příklad komplikoval:-):
    <?php
    class AuthController extends Zend_Controller_Action
    {
      public function __call($method, $args)
      {
        $this->view->errorMsg = 'Sorry, login page not done yet!';
        return $this->render('error');
      }
      /*
      public function loginAction(){
        //handle login
      }
      */
    }
    

    Na závěr ještě doplním, že když byla řeč o kontolerech v Zendu, tak bych určitě měl zmínit, že existuje něco jako action helper, ale o tom taky až někdy jindy (snad:-)        

    Hodnocení: 88 %

            špatnédobré        

    Obrázky

    Zend framework II, obrázek 1

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    31.3.2008 19:47 srigi | skóre: 10 | blog: sricont
    Rozbalit Rozbalit vše Re: Zend framework II
    Osobne mi pride ta schema zo Zend maualu trocha neprehladna. Mam radsej tuto. BTW ak by niekto hladal komplet tutorial, tak som jeden napisal.
    1.4.2008 08:29 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Zend framework II
    Tady ale slo o front controller, ne o kompletni cyklus request from browser->response to browser. Chovani fronto controlleru na tom tebu uvadenem schmenatu neni zrovna moc podrobne ukazano. Jinak ten tvuj tutorial vypada na prvni pohled dobre, rad si jej prectu, dik.
    5.10.2018 09:09 Thanos
    Rozbalit Rozbalit vše Re: Zend framework II
    Have to seen the online all update for windows service of desktop device so save the information how to use remote desktop windows 10 and start the process to full way of remote device set to all thanks.
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.