Nette framework

24. December, 2010, Autor článku: Michálik Ľuboš, Informačné technológie
Ročník 3, číslo 12 This page as PDF Pridať príspevok

Nette Framework je open source projekt ktorý je napísaný v PHP 5 s plným využitím objektov. Je V poslednom čase nabral na popularite a to najmä v Českej republike a na Slovensku. Zrejme za svoju popularitu vďačí aj malej jazykovej bariére medzi vývojármi v stále rozširujúcej sa aktívnej komunite okolo frameworku.

Čo je framework

Framework je v prvom rade prostriedok na zjednodušenie práce. Je to súbor knižníc a kódu, ktorý sa snaží pokryť čo najviac funkčných požiadaviek spoločných pre rôzne aplikácie. Pri webových aplikáciách sú to funkcie ako validácia vstupných dát, autentifikácia a autorizácia užívateľov, prístup k databázi, cachovanie údajov alebo správa užívateľských práv.

O autorovi

Autorom Nette Frameworku je Dávid Grudl, známa osobnosť českého internetu. Nette Framework nie je jediným jeho dielom, je takisto autorom databázovej vrstvy dibi, prekladača textu do html Texy. Je známy aj vďaka svojim blogom La Trime a phpFashion. V súčasnosti sa venuje školeniam vývoja webových aplikácií v Nette.

Dostupné verzie

S verziami frameworku je to trochu zmätočné. Prvá verzia nebola nikdy vydaná. Namiesto nej autor, v tomto roku predstavil verziu 2 Alpha, čo znamená, že by mala byť plne funkčná a použiteľná v ostrom prostredí, ale do vydania finálnej verzie sa niektoré vlastnosti budú meniť.

  • Nette Framework 0.9.7 stable (z dňa 11.11.2010) – stabilná verzia, už ďalej nevyvíjaná. Dostupná pre PHP 5.2.0 a vyššie ako aj PHP 5.3.0 a vyššie.
  • Nette Framework 2.0 Alpha 2 (rok vydania 2010) – aktuálna verzia, stále vo vývoji. Dostupná pre PHP 5.2.0 a vyššie ako aj PHP 5.3.0 a vyššie.

Licenčná politika

Nette Framework je šírený ako slobodný softvér, a to pod dvoma slobodnými licenciami, Nette Licencia a GPL licencia. Vďaka ním je možné framework slobodne používať, kopírovať, modifikovať a distribuovať framework a jeho dokumentáciu, v pôvodnom ale i upravenom tvare pre akýkoľvek účel, za predpokladu že sú splnené podmienky použitia, ktoré sú dostupné v texte vyššie uvedenej Nette Licencie.

Kľúčové vlastnosti

  • Otvorenosť frameworku
  • Prepracovaný systém eliminácie a ladenia chýb
  • Výborný šablónovací jazyk
  • Zabezpečenie webovej aplikácie
  • Nepriestrelné formuláre
  • Najaktívnejšia komunita v českej republike
  • Podpora menných priestorov v PHP 5.3
  • Existuje kompaktná verzia (prináša zrýchlenie v desiatkach percent)
  • Dá sa výborné kombinovať so Zend Frameworkom

Bezpečnost

Nette Framework eliminuje výskyt bezpečnostných dier a možnosti využitia ich. Eliminuje rizika voči útokom ako je napr.:

  • XSS (Cross-site scripting) – metóda narušenia webových stránok pomocou neošetrených výstupov. Nette používa technológiu Context-aware escaping, ktorá automaticky ošetruje všetky výstupy z aplikácie a tak sa nemôže stať že by programátor na niečo zabudol.
  • CSRF (Cross-site request forgery) – spočíva v tom, že prinútime užívateľa navštíviť stránku na ktorej je prihlásený a potom skryte vykonať útok na webovú aplikáciu. Proti útokom sa dá brániť pomocou generovania a overovania tzv. autorizačných tokenov.
  • URL attack, control codes, invalid UTF-8 – útočník sa snaží napadnúť aplikáciu cez vstupy. Ošetrovanie všetkých vstupov opäť automaticky bude prevádzať framework bez akéhokoľvek nastavovania. Na implementovanie takejto ochrany vo frameworku musíme nastaviť ochranu pre vstupné formuláre pridaním jediného príkazu ($form->addProtection();)
  • Session hijacking, session stealing, session fixation – predstavujú útoky pomocou session. Obrana spočíva v správnom nakonfigurovaní PHP, ktoré prevedie framework úplne automaticky.

Eliminácia a ladenie chýb

Tzv. ladenka, pod ktorým názvom je známa trieda Nette/Debug je silným nástrojom tohto frameworku. Tento nástroj vylepšuje chybové hlásenia PHP, sprehľadňuje zobrazenie chybového kódu a pridáva kopu užitočných informácií. Ladenka si rozumie aj s rozšíreniami Firefoxu (FireBug a FirePHP), vďaka tomu môžeme posielať chybové hlásenia aj do konzole Firebugu.

Zobrazovanie chybových hlásení je užitočný nástroj na vývojovom serveri ale na produkčnom by to bola hotová katastrofa. Tam je vypisovanie ladiacich informácií nežiaduce. Sama dokáže detegovať či aplikácia beží na vývojovom alebo produkčnom serveri. Na vývojovom serveri zobrazuje výnimky, na produkčnom serveri zasa nezobrazuje žiadne chybové hlásenia, loguje chyby do súboru a umožňuje, chybové hlásenia aj s logovacím súborom zasielať programátorovi na mail.

Pretože je Nette Framework otvorený softvér je možné aj jednotlivé jeho časti využívať vo svojich aplikáciách. Vhodnou časťou na využitie je práve trieda Nette/Debug .

Šablónovací jazyk

Prepracovaný šablonovací jazyk v Nette Frameworku prináša niekoľko výhod:

  • Automatické escapovanie premenných (z premenných sa odstráni potenciálny škodlivý kód, čo predstavuje ochranu pred už spomenutým Cross Site Scriptingom)
  • Alternatívna forma zápisu, ktorá prináša zjednodušenie výpisu napr. pola prvkov
  • Princíp “less code, more security”, teda menej písania kódu vedie k väčšej bezpečnosti

Opäť sa dá využiť otvorenosť frameworku na to aby sme jednak mohli namiesto šablónovacieho systému Nette Frameworku použiť iný, tak ako aj použiť šablónovací systém frameworku v inej aplikácií.

AJAX

AJAX nám vo webových aplikáciách slúži na asynchrónnu komunikáciu so serverom, čo nám prináša výhodu v odpadnutí nutnosti znovu načítania celej stránky. Všetko sa deje pomocou http požiadaviek a odpovedí. Nette Framework nám bude nápomocný ako pri tvorení požiadavky, tak aj pri vytvorení odpovedia na serveri a prijatí správy a jej reprezentácii do výsledného formátu zobrazeného vo webovej stránke.

Framework nenúti používať žiadnu konkrétnu javascriptovú knižnicu, môžeme si obslužný skript napísať celkom sami, alebo si môžeme pomôcť napr. javascriptovou knižnicou jQuery. Pri práci s AJAXom môžeme využiť Nette Framework plugin pre jQuery.

  • Pre vytvorenie požiadavky stačí na linky ktoré chceme aby odosielali požiadavky zavesiť triedu “ajax” a uvedený plugin nám ich automaticky prevedie do formy, ktorá je potrebná pre zaslanie požiadavky.
  • Spracovanie na strane PHP je veľmi jednoduché. Stačí naučiť presenter odpovedať na Ajaxové požiadavky a to zabezpečíme označením fragmentov HTML v šablóne. Označenie prevedieme pomocou párových značiek {snippet}…{/snippet}.Snippety zaručia aby sa počas celého Ajaxovej operácie pracovalo len s označeným fragmentom.
  • O poslednú fázu, teda spracovanie odpovedi od serveru, sa postará handler JQuery.netteCallback. Handler očakáva JSON štruktúru, ktorá buď obsahuje príkaz na presmerovanie alebo pole fragmentov HTML, ktoré potom vloží na príslušne miesto do stránky.

Doplnky, pluginy a komponenty

Vďaka svojej otvorenosti môžeme svoj framework obohatiť o nejaký doplnok, ktorý sa nám bude práve hodiť pri riešení problému pri tvorbe našej webovej aplikácie. Zoznam doplnkov je možné nájsť na nasledujúcej adrese: http://addons.nette.org/cs/. Vyberať si môžeme z vizuálnych komponentov, nevizuálnych komponentov, rozšírení formulárov, nástroje na pomoc pri práci s Ajaxom a ešte viac iných.

Nie len rozšírenie frameworku nám uľahčujú prácu, ale dokonca pre populárne IDE Netbeans bol vytvorený plugin pre zefektívnenie práce. Nápomocný je najmä pri práci so šablónami ako aj pri vytváraní počiatočných nastavení projektu. Bližšia špecifikácia pluginu a postup inštalácie sa nachádza na adrese http://forum.nette.org/cs/4557- netbeans-nette-framework-plugin

Weby využívajúce Nette Framework

Nette Framework používaju spoločnosti ako:

  • Internet Info – vydavateľ lupa.cz a root.cz
  • Vltava-Label-Press
  • Mladá Fronta
  • Eset
  • Na Nette dokonca beží aj webová stránka prezidenta Českej republiky, Václava Klausa.

Dôležité odkazy

  1. Oficiálna stránka frameworku: http://nette.org/
  2. České forum: http://forum.nette.org/cs/
  3. API dokumentácia: http://api.nette.org/2.0/
  4. Dokumentácia: http://nette.org/cs/dokumentace
  5. Užívateľské tutoriály, screencasty, články: http://wiki.nette.org/cs/tutorialy

Napísať príspevok