Nette Framework
Nette Framework è un framework open source per la creazione di applicazioni web in PHP 5 e PHP 7. Nette Framework si focalizza sull'eliminazione dei rischi sulla sicurezza, supporta AJAX, DRY, KISS, MVC e riutilizzo del codice. Utilizza la programmazione basata sugli eventi ed utilizza in gran parte l'utilizzo dei componenti. L'autore originale di Nette Framework è David Grudl e del suo sviluppo odierno se ne occupa la Nette Foundation.[1] Nette Framework è un software libero, distribuito sotto licenza GNU GPL e licenza Nette,[2] che deriva dalla licenza BSD originale (vecchia a 4 clausole).
L'autore di Nette Framework organizza corsi di formazione che in parte possono sostituire pezzi di documentazione.[3] Ogni mese si svolge un incontro non formale dei sostenitori di Nette Framework, chiamato l'ultimo sabato organizzato a Praga, Brno ed altre città. L'ingresso è gratis.
Requisiti
Nette Framework ha bisogno di PHP 5.3.1 o maggiore. Altri requisiti sono possibili testare sul server grazie al tool Requirements Checker[4].
Proprietà di Nette Framework
- Strumenti di debug
- Comunità attiva in Repubblica Ceca
- Supporto per i name spaces in PHP 5.3
Autoloading
NetteLoader
In ambiente di produzione è possibile caricare un unico file.
<?php
require_once 'Nette/loader.php';
RobotLoader
- Utilizza la cache, è necessario configurare il percorso
- Invalidazione intelligente della cache
- Nel file netterobots.txt è possibile configurare i percorsi da ignorare
$loader = new RobotLoader();
$loader->addDirectory('libs');
$loader->register();
Eliminazione e ricerca degli errori
Nette Framework ci offre una serie di strumenti potenti per l'individuazione e trattamento di eventuali errori.
Tuning
Strumenti di debug per catturare gli errori che derivano dalla compilazione del programma. Semplifica i classici messaggi di errore permettendo quindi un debug efficace dell'applicazione. Per utilizzarli basta semplicemente attivare il debug.
<?php
require 'libs/Nette/loader.php';
Debug::enable();
Collegamento a 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í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
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
- 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
- Nezachovávání zpětné kompatibility v nových verzíchTemplate:Fakt/dne
- Nutnost občas ručně promazat cache
- Určitá nekonzistence celého interfaceTemplate:Fakt/dne
- 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
- Více reklamy než objektivních informací od autora NetteTemplate:Fakt/dne
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é 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
- ^ Nette Foundation
- ^ Licenční politika na oficiálních stránkách Nette
- ^ Jakub Vrána: Ohlas na školení Nette, blog PHP triky
- ^ Nástroj Requirements Checker
Externí odkazy
- Oficiální stránky frameworku
- Články o frameworku
- Zdrojak.cz: Seriál Začínáme s Nette Frameworkem
- Root.cz: Velký test PHP frameworků: Zend, Nette, PHP a RoR
- Czech PHP User Group: Přednáška o frameworku Nette – David Grudl
- PHP triky: Unikátní vlastnosti Nette
- Přednášky on-line
Kategorie:Webové aplikační frameworky Kategorie:Software v PHP Kategorie:Svobodný software