The English encyclopedia Allmultimedia.org will be launched in two phases.
The final launch of the Allmultimedia.org will take place on February 24, 2026
(shortly after the 2026 Winter Olympics).

Nette Framework

Z Multimediaexpo.cz

Stop hand.png   Neutralita tohoto článku je celkově zpochybněna.
  Podrobnější zdůvodnění najdete v diskusi.
  Pro vkladatele šablony: Vložte prosím na diskusní stránku zdůvodnění.
Stop hand.png



Nette Framework je výkonný framework pro tvorbu webových aplikací v PHP 5. Zaměřuje se na eliminaci bezpečnostních rizik, podporuje AJAX, DRY, KISS, MVC a znovupoužitelnost kódu. Využívá událostmi řízené programování a z velké části je založen na použití komponent. Původním autorem Nette Frameworku je David Grudl, o jeho další rozvoj se stará organizace Nette Foundation.[1] Nette Framework je svobodný software, nabízený pod licencemi GNU GPL a licencí Nette,[2] která je obdobou původní (staré, čtyřbodové) BSD licence.

K Nette Frameworku pořádá autor školení.[3] Každý měsíc se také koná neformální setkání příznivců Nette Frameworku, nazývané Poslední sobota; pořádané v Praze, Brně i na jiných místech. Vstup na akci je zdarma.[4]

Obsah

Požadavky

Nette Framework vyžaduje minimálně verzi PHP 5.2.0.

Kdo je David Grudl

David Grudl se vývojem a navrhováním webových aplikací věnuje soustavně již od konce 90. let minulého století. Je zároveň autorem školení Nette Framework a dalších populárních open-source knihoven, například Texy nebo dibi. Od roku 2004 píše blog s názvem La Trine a odborně zaměřený phpFashion.

Vlastnosti Nette Framework

  • Bezpečnost
  • Ladící nástroje
  • Komponenty a znovupoužitelnost kódu
  • Aktivní komunita uživatelů v ČR
  • Podpora jmenných prostorů v PHP 5.3

Verze frameworku

Existují 3 základní varianty, ve kterých lze Nette framework stáhnout.

  • pro PHP 5.3 se jmennými prostory
  • pro PHP 5.2 s prefixy tříd (místo třídy Object používá NObject a další)
  • pro PHP 5.2

Autoloading

NetteLoader

Stačí načíst jediný soubor

<?php
require_once 'Nette/loader.php';

RobotLoader

  • Využívá cache, je třeba nastavit její cestu
  • Inteligentní invalidace cache
  • V souboru netterobots.txt lze nastavit ignorované adresáře
$loader = new RobotLoader();
$loader->addDirectory('libs');
$loader->register();

Eliminace a ladění chyb

Nette Framework nám dává několik velmi silných nástrojů pro odhalování a ošetřování případných chyb.

Laděnka

Ladící nástroj na odchytávání chyb vzniklých během kompilace programu. Zpřehledňuje klasické chybové hlášky. Umožňuje tak efektivní debug aplikace. Stačí využít NetteLoader a zapnout debug mód.

<?php
require 'libs/Nette/loader.php';
Debug::enable();

Připojení na FireBug

Komunikací FireBug a Nette\Debug umožňuje zasílat zprávy samostatným kanálem, mimo okno samotného prohlížeče. Informace se tedy neztratí v případné záplavě textů na stránce, ale zobrazí se přehledně v jiném okně. Chyby úrovně E_NOTICE a E_WARNING jsou do FireBug zasílány automaticky. Je nutné mít nainstalovaný FireFox alespoň verze 2. Stáhnout si rozšíření Firebug a FirePHP minimálně verzi 0.2. Nette\Debug komunikuje s FireBug přes hlavičky HTTP. Je tedy nutné volat logovací funkci před tím než začne PHP skript cokoliv vypisovat. Samozřejmě je možné zapnout output buffering a tím výstup oddálit.

Konzole

Nette Debug console je vyskakovací okénko, do kterého je možné vypisovat proměnné.

<?php
$pole = array(1,2,3,5);
Debug::consoleDump($pole);

Logování chyb

V případě produkčního režimu, kdy není vhodné ani žádoucí využívat některou z předchozích metod výpisu chyb nám dává Nette Framework nástroj k zachycení vzniklých chyb do logu. Textového souboru, kde se můžeme přesně dozvědět co se v aplikaci stalo a případné chyby opravit. Logování chyb je třeba zapnout a nastavit cestu k adresáři, do kterého je možné zapisovat.

Debug::enable(Debug::DETECT, '%logDir%/php_error.log', 'admin@example.com');

Parametr Debug::DETECT říká, že má Nette samo zjistit zda se server nachází v produkčním nebo vývojovém režimu. Další parametr je cesta k logovacím souborům a poslední je E-mailová adresa, kam se bude zasílat upozorněno o vzniku chyby. Zahlcení Vaší E-mailové schránky se nemusíte bát, Nette zašle upozornění na výskyt chyby pouze jednou. Pro obnovu zasílání E-mailů je nutné vymazat textový soubor, který říká, že oznámené již bylo odesláno.

Vývojový nebo produkční režim

Nette rozlišuje 2 režimy, pod kterými běží server. Vývojový režim se snaží nabídnou veškeré informace pro programátora o rychlosti běhu aplikace, o routování a pohodlný výpis vzniklých chyb. Naproti tomu v produkčním režimu Nette veškeré informace skryje a umožňuje logování chyb do souboru mimo oči běžného uživatel.
Framework dokáže sám zjistit v jakém režimu se server nachází. Rozhoduje se na základě IP adresy přidělené serveru. Chybu může způsobit server běžící za proxy serverem, nebo server určený pro lokální potřeby organizace. V tomto případě je nutné nastavit aktuální režim ručně.

Debug::enable(Debug::DEVELOPMENT);
Debug::enable(Debug::PRODUCTION);

Webové formuláře

Nette dává programátorovi velmi silný nástroj pro tvorbu formulářů. Samotný framework zařídí veškeré ohlídání prvků formuláře. Ohlídá vstupy proti možným útokům.

Přednosti Nette Framework

  • Obsahuje velmi silný validační jazyk
  • Automaticky generuje validační JavaScript
  • Plná moc nad vzhledem formulářů
  • Podpora automatického překladu
  • Ušetření proti útokům: XSS, Cross-Site Request Forgery,UTF-8 attack
$form = new Form();
$form->addText('jmeno','Zadejte jméno')
     ->addRule(Form::FILLED,'Zadejte své jméno');
$form->addPassword('heslo','Zadejte své heslo')
     ->addRule(Form::FILLED,'Zadejte heslo');
$form->addSubmit('prihlasit','Přihlásit');
echo $form;

Routování, Cool URL

Na rozdíl od většiny jiných frameworků je možné nastavit tvar URL jako poslední věc v celé aplikace. Umožňuje to obousměrné zpracování routů, routa slouží jak k parsování tak generování cest. Pěkné URL (Cool URL) je důležité také pro SEO, vyhledávače adresy vyhodnocují a stává se součástí bodování důležitostí webu a ovlivňuje tak pozici ve vyhledávači. Zároveň jsou adresy čitelnější a zapamatovatelnější pro uživatele stránek. Nette odstiňuje použití direktiv mod_rewrite a tak není nutné definovat tvar rout na více místech. Tím se předchází vzniku chyb. Příklady klasických URL:

  • example.com?modul=article&action=show&id=10
  • example.com?modul=article&action=delete&id=10

URL při použití routy v Nette:

  • example.com/article/show/10
  • example.com/article/delete/10

Reference

  1. Nette Foundation
  2. Licenční politika na oficiálních stránkách Nette
  3. Jakub Vrána: Ohlas na školení Nette, blog PHP triky
  4. Poslední sobota v měsíci pro příznivce Nette Frameworku, zprávička na zdrojak.root.cz, 26. 2. 2009

Externí odkazy

Oficiální stránky frameworku
Články o frameworku
Přednášky on-line