Template:Infobox - software

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

La comunicazione tra FireBug e Nette\Debug permette di inviare i messaggi attraverso un canale separato al di fuori del browser. Le informazioni non si perdono quindi nel caso in cui il testo si deforma nella pagina, ma si visualizzano chiaramente in una nuova finestra. Gli errori a livello di E_NOTICE e E_WARNING sono inviati a FireBug in maniera automatica. E' necessario aver installata almeno la seconda versione di FireFox. Scaricasi Firebug e FirePHP almeno la versione 0.2. Nette \ debug comunica con Firebug tramite intestazioni HTTP. E' quindi necessario chiamare la funzione di registrazione prima che lo script PHP inizi a scrivere qualche cosa. Naturalmente è possibile attivare il buffer di uscita e il ritardo di uscita.

Console

Nette Debug console è una finestra pop-up in cui è possibile visualizzare una variabile.

<?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

  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. ^ Nástroj Requirements Checker

Externí odkazy

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

Template:Aplikační frameworky

Kategorie:Webové aplikační frameworky Kategorie:Software v PHP Kategorie:Svobodný software