Nette Framework

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Nette Framework
Logo
Vývojář David Grudl, Nette Foundation
Aktuální verze 2.4[1] (3. května 2016)
Operační systém Multiplatformní
Vyvíjeno v PHP
Typ softwaru Webový aplikační framework
Licence New BSD, GNU GPL
Web http://www.nette.org, https://nette.org/en

Nette Framework je open source framework pro tvorbu webových aplikací v PHP 5 a PHP 7. 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.[2] Nette Framework je svobodný software, nabízený pod licencemi GNU GPL a licencí Nette,[3] která je obdobou původní (staré, čtyřbodové) BSD licence.

K Nette Frameworku pořádá autor školení, která částečně mohou nahradit chybějící kusy dokumentace.[4] 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.[5]

Požadavky[editovat | editovat zdroj]

Nette Framework vyžaduje PHP ve verzi 5.3.1 a vyšší. Další požadavky je možné otestovat na serveru pomocí oficiálního nástroje Requirements Checker[6].

Vlastnosti Nette Framework[editovat | editovat zdroj]

  • Ladící nástroje
  • Aktivní komunita uživatelů v ČR
  • Podpora jmenných prostorů v PHP 5.3

Autoloading[editovat | editovat zdroj]

NetteLoader[editovat | editovat zdroj]

V produkčním prostředí stačí načíst jediný soubor.

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

RobotLoader[editovat | editovat zdroj]

  • 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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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ění 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[editovat | editovat zdroj]

Nette rozlišuje 2 režimy, pod kterými běží server. Vývojový režim se snaží nabídnout 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živatele.
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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

  • Obsahuje velmi silný validační jazyk
  • Automaticky generuje validační JavaScript
  • Plná moc nad vzhledem formulářů
  • Podpora automatického překladu
  • Ošetření proti útokům: XSS, Cross-Site Request Forgery, UTF-8 attack
  • SIlná ochrana oproti SQL injection, v případě používání notORM (Nette database)
$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;

Nevýhody Nette Framework[editovat | editovat zdroj]

  • Nutnost občas ručně promazat cache
  • Slabá dokumentace funkcí frameworku a databázové vrstvy
  • Neexistující „best practice“ příklady implementace modelové vrstvy
  • Databázová vrstva se chová výrazně jinak pro tabulky bez primárního klíče

Routování, Cool URL[editovat | editovat zdroj]

Na rozdíl od většiny jiných frameworků je možné nastavit tvar URL jako poslední věc v celé aplikaci. Umožňuje to obousměrné zpracování routů, které 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 (pouze domněnka některých "SEO odborníků", URL nemá na pozici ve vyhledávači žádný vliv). 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[editovat | editovat zdroj]

  1. Released version 2.4 [online]. . [1]. (anglicky) 
  2. Nette Foundation
  3. Licenční politika na oficiálních stránkách Nette
  4. Jakub Vrána: Ohlas na školení Nette, blog PHP triky
  5. Poslední sobota v měsíci pro příznivce Nette Frameworku, zprávička na zdrojak.root.cz, 26. 2. 2009
  6. Nástroj Requirements Checker

Externí odkazy[editovat | editovat zdroj]

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