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 15:33 | Nová verze

    Byl vydán Mozilla Firefox 140.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Dle plánu byla odstraněna ikona a integrace služby Pocket. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 140 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:00 | Nová verze

    Byla vydána (Mastodon, 𝕏) vývojová verze 3.1.2 příští stabilní verze 3.2 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání.

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

    Na stránkách konference Den IPv6 2025, jež proběhla 6. června v Praze, byly zveřejněny prezentace (PDF) a videozáznamy přednášek.

    Ladislav Hagara | Komentářů: 3
    dnes 05:11 | Nová verze

    Byla vydána verze 2.2.0 programovacího jazyka Kotlin (Wikipedie, GitHub). Ke zhlédnutí jsou videozáznamy přednášek z konference KotlinConf 2025.

    Ladislav Hagara | Komentářů: 0
    včera 14:33 | Bezpečnostní upozornění

    V linuxových systémech byly odhaleny dvě závažné zranitelnosti – CVE-2025-6018 v rámci PAM (Pluggable Authentication Modules) a CVE-2025-6019 v knihovně libblockdev, kterou lze zneužít prostřednictvím služby udisks. Ta je součástí většiny běžně používaných distribucí, jako jsou Ubuntu, Debian nebo Fedora. Kombinací obou zranitelností může útočník s minimálním úsilím získat root přístup. Vzhledem k jednoduchosti zneužití

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 14:00 | Pozvánky

    OpenSSL Corporation zve na den otevřených dveří ve středu 20. srpna v Brně a konferenci OpenSSL od 7. do 9. října v Praze.

    Ladislav Hagara | Komentářů: 0
    včera 12:11 | Humor

    Něco z IT bulváru: Mark Russinovich pozval Billa Gatese, Linuse Torvaldse a Davida Cutlera na večeři a zveřejnil společné selfie. Linus se s Billem ani s Davidem do té doby nikdy osobně nesetkal. Linus a David měli na sobě červená polotrika. Mark a Bill byli v tmavém [LinkedIn].

    Ladislav Hagara | Komentářů: 5
    včera 12:00 | IT novinky

    Evropská unie nově prověřuje obchod, při němž americký miliardář Elon Musk prodal svou sociální síť X dříve známou jako Twitter vlastnímu start-upu xAI za 33 miliard dolarů (712 miliard Kč). Unijní regulační úřady zvažují, zda firmě X neudělit pokutu podle nařízení Evropské unie o digitálních službách (DSA).

    Ladislav Hagara | Komentářů: 10
    včera 04:44 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.06 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    22.6. 13:33 | Nová verze

    Svobodný kancelářský balík ONLYOFFICE (Wikipedie) byl vydán ve verzi 9.0. Jak online Docs, tak i offline Desktop Editors. Přehled novinek také na YouTube.

    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (58%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 303 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Zend framework

    28.3.2008 22:17 | Přečteno: 4340× | Výběrový blog | poslední úprava: 29.3.2008 00:00

    Zend framework - Hello world

    Před pár dny jsem odkýval, že se budu podílet na jednom projektu. Pak jsem ale zjistil, že se bude dělat v Php a používat se bude patrně Zend framework. Nic proti Php ani Zendu (zatím) nemám, snad jen to, že jsem v Php (a tudíž pochopitelně i Zendu) nikdy pořádně nedělal a Php téměř neznám (tím nechci říct, že existuje programovací jazyk, o kterém bych se odvážil tvrdit, že v něm umím, neodvážil bych se ani tvrdit, že umím programovat:-) ). Inu, co neumím, to se naučím (a nebo to aspoň zkusím). Takže jsem teď po večerech, když jsem měl zrovna volnou chvilku, začal okukovat Zend. Toto tedy budou poznámky o Zednu (jestli bude síla a čas, tak těch zápisků bude víc), nebo spíš takový kompilát příkladů posbíraných různě po webu a manuálu. Třeba se to někomu bude hodit.

    Zend je open source MVC framework, naprogramovaný v Pph5 (takže je naprogramován pěkně objektově), který se krom MVC snaží uplatňovat i další návrhové vzory (např. front controller). Důraz je kladen na modularitu, takže se nemusí používat cely framework, ale třeba jen některé jeho části, které se právě hodí.

    Typická adresářová struktůra vypadá následovně:
        zendTest/
            controllers/
                IndexController.php
                FooController.php
            models/
            views/
                scripts/
                    index/
                    foo/
                helpers/
                filters/
    
    Vše umístíme nejlépe někam mimo web adresář, mimo dosah Apache. Do web adresáře pak dáme jen zendTest/index.php (a případně styly, javascripty etc.) a soubor .htaccess (což ovšem předpokládá, že máme v konfiguraci Apache povoleno použití htaccess souborů, načtené potřebné moduly...). Obsah souborů index.php i .htacces je vcelku prostý:
    <?php
    require '../../zendTest/bootstrap.php';
    
    a
     
    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
    
    Obsah souboru .htaccess se postará o přesměrovaní requestů, jejich url nekončí příponami uvedenými v závorce na index.php, který se jen postará o načtení souboru bootstrap.php (který leží v kořenovém adresáři naší aplikace zendTest někde mimo webový adresář). V souboru bootstrap.php se provedou potřebná nastavení (hlavně nastavení cesty k zend frameworku samotnému), načtení potřebných tříd a na závěr získání instance front controlleru a obsluha požadavku. bootstrap.php by mohl vypadat např. následovně:
    <?php
    //error reporting
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 1);
    //path to zend and class path
    set_include_path('../../zend/library'. PATH_SEPARATOR . '../../zendTest/models/' . PATH_SEPARATOR . get_include_path());
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
    
    //setup front controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    //path to controllers
    $frontController->setControllerDirectory('../../zendTest/controllers');
    //dispatch request
    $frontController->dispatch();
    
    Zavolání funkce Zend_Loader::registerAutoload(); způsobí, že nebude potřeba načítat potřebné třídy Zendu explicitně voláním Zend_Loader::loadClass('clazz'), ale při vytváření instance dané třídy se o to framework postará sám. O obsluhu všech požadavků se stará front controller, který v nejjednodušším případě dělá to, že z url určí příslušný modul a dále pak určí a následně zavolá kontroler a příslušnou akci, která se má provést. Toto určení modulu, kontroleru a akce se provádí podle klíče http://localhost/application/controller/action (případně application/module/controller/action). V případě, že není určený kontroler nebo akce, volá se automaticky IndexController, resp. indexAction.

    Jestliže tedy budeme chtít vytvořit oblíbený začátečnický program "Hello world!", který se zobrazí po zadání adresy http://localhost/zendTest, musíme v adresáři zendTest/controllers vytvořit třídu IndexController, která dědí od Zend_Controller_Action, kde implementujeme akci indexAction:

    <?php
    
    class IndexController extends Zend_Controller_Action
    {
      
    	function indexAction()
    	{
    		$this->view->title = "Hello world!";
    		$this->view->content = "etc.";
    	}
    
    
    }
    
    Máme tedy kontoler, model v našem jednoduchém příkládku nevyužijeme, poslední co tedy zbývá udělat, je vytvořit nějaké view. V adresáři zendTest/views/scripts vytvoříme adresář index (bude obsahovat view ke kontroleru IndexController) a v něm soubor index.phtml (view k akci indexAction) např. následujícího obsahu:
    <?php echo $this->render('header.phtml'); ?>
    
    <h1><?php echo $this->escape($this->title); ?></h1>
    <?php echo $this->escape($this->content); ?>
    
    <?php echo $this->render('footer.phtml'); ?>
    
    Hlavičku a patičku umístíme do oddělených souborů, abychom je později jednoduše mohly použít pro další šablony. Zend tyto soubory očekává v adresáři zendTest/views/scripts.

    Náš "Hello world" zobrazíme tak, ze do prohlížeče zadáme adresu http://localhost/zendTest (stejně tak bude fungovat http://localhost/zendTest/index nebo http://localhost/zendTest/index/index).

    PS. Jestli se někdo diví, proč skripty nejsou uzavřeny tagem ?>, tak ať se podívá sem.        

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    28.3.2008 22:48 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
    Rozbalit Rozbalit vše Re: Zend framework
    -- Nezdar není hanbou, hanbou je strach z pokusu.
    28.3.2008 23:28 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Zend framework
    Tohle se mi líbí. Tak má vypadat první článek o webovém frameworku (ne že bych chtěl dělat v PHP, chraň bůh :-) ).
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    alblaho avatar 29.3.2008 23:34 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Zend framework
    Ještě (a o dost) horší než Java, viď?-)
    30.3.2008 00:30 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Zend framework
    Mrcho :-D Ale jo, tak nějak to je :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    29.3.2008 15:43 LesTR | skóre: 17 | Plzeň
    Rozbalit Rozbalit vše Re: Zend framework
    <?php echo $this->>render('header.phtml'); ?>

    Mnohem lepsi je pouzit Zend_Layout, tohle do view imho moc nepatri a hlavne to budes muset mit ve vsech strankach, coz je trochu opruz a taky nemuzes stejnou template pouzit pro rozdilne views.

    Dale je doporucovavano mit vsech rozdeleno do "samostatnych" modulu a defautlni nazvany default. Tzn. ze v adresari application bude podadresar default a v nem potom az to co tam mas ted.

    Jinak preju hodne zabavy, se ZF se da opravdu hodne rychle vyvijet.
    Save The World - http://www.worldcommunitygrid.org/ LesTR
    29.3.2008 17:46 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Zend framework
    OK, diky za tipy na zlepseni, k Zend_Layout jsem se jeste nedocelt:-)
    30.3.2008 08:44 Karel Benák | skóre: 8 | blog: benyho
    Rozbalit Rozbalit vše Re: Zend framework

    Zend_Layout je vážně super věc. Do bootstrapu se dá něco jako:

    $layout = Zend_Layout::startMvc();
    $layout->setConfig($config);
    

    V $config je uložena instance konfigurace, vytvořená např. pomocí třídy Zend_Config_Ini nebo Zend_Config_Xml (já preferuju Zend_Config_Xml) a ve svém konfiguračním XML je něco jako:

    <configdata>
         <production>
              <layout>hlavnilayout</layout>
              <layoutPath>application/layout/</layoutPath>
         </production>
    </configdata>
    

    No a ve vlastním layoutu hlavnilayout.phtml pak můžeš uvést vlastní tělo HTML stránky:

    <?php
    $this->headMeta()->appendHttpEquiv("Content-Type","text/html; charset=UTF-8");
    ?>
    <?= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ?>
    <?= $this->doctype("XHTML1_STRICT")."\n" ?>
    <html>
    <head>
    <?= $this->headTitle()."\n" ?>
    <?= $this->headMeta()."\n" ?>
    <?= $this->headLink()."\n" ?>
    <?= $this->headScript()."\n" ?>
    </head>
    <body>
    <div id="Header">
    <h1><?= $this->headTitle()->getValue() ?></h1>
    </div>
    <div id="Content">
    <!-- Tady se bude generovat vlastní tělo stránky -->
    <?= $this->layout()->content ?>
    </div>
    <div id="Footer" class="NoPrint">Patička stránky</div>
    </body>
    </html>
    

    Hlavní obsah stránky generována v controlleru se doplní v $this->layout()->code. V controlleru lze rovněž pomocí $this->_helper->layout->disableLayout() vykreslování layoutu buď úplně vypnout, nebo pomocí $this->_helper->layout->setLayout('jinylayout') nastavit layout jiný.

    Musím uznat, že předtím byla práce se Zend Framework trošku složitější.

    Láska je jako prd, když hodně tlačiš tak z toho bude ...
    30.3.2008 09:48 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Zend framework
    diky za priklad pouziti
    26.6.2010 11:29 xxxObiWan
    Rozbalit Rozbalit vše Re: Zend framework
    Ahoj, díky za super článek. Měl bych pár dotazů :-)

    1) Třída IndexController bude v souboru zendTest/controllers/index.php? Píšeš jen složku, do které se ta třída má dát, ale ne název souboru. Nebo je to jedno?

    2) Kde se ve skriptu index.phtml vzala proměnná $this? A taky mi uchází logika toho, proč index.phtml dávat do samostatné složky index/. Zatím do té logiky adresářové struktury Zendu moc nevidím :-(

    Díky ;-)
    9.8.2012 12:44 bartama
    Rozbalit Rozbalit vše Re: Zend framework
    1) Soubor bude v zendTest/controllers/IndexController.php

    2) This odkazuje na atribut ze současné třídy. Možná přehlednost?

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.