Nette Documentation Preview

syntax
Historie Nette
**************

.[perex]
Počátek vzniku Nette sahá do roku 2004, kdy jeho autor David Grudl začal hledat vhodný framework, ve kterém by mohl psát aplikace, protože čisté PHP k tomu již nestačilo. Žádné z tehdy dostupných řešení mu nevyhovovalo, tak začal postupně načrtávat rysy nového frameworku, který později dostal jméno Nette.

V té době ještě neexistovaly současné frameworky jako Symfony, Laravel nebo třeba Ruby on Rails. Ve světě Javy byl standardem framework JSF (JavaServer Faces) a v konkurenčním .NET zase ASP.NET Webforms. Oba umožňovaly stavět stránky pomocí znovupoužitelných UI komponent. Jejich způsoby abstrakce a snahy vytvořit stavovost nad bezstavovým protokolem HTTP pomocí session nebo tzv. postbacku považoval David za chybné a od základu nefunkční. Působily řadu obtíží uživatelům i vyhledávačům. Například pokud jste si uložili odkaz, s překvapením jste později pod ním našli jiný obsah.

Samotná možnost skládat stránky ze znovupoužitelných UI komponent Davida fascinovala, dobře ji znal z Delphi, tehdy populárního nástroje pro tvorbu desktopových aplikací. Líbily se mu tržiště s opensource komponentami pro Delphi. Snažil se proto vyřešit otázku, jak vytvořit komponentový framework, který by naopak fungoval v naprostém souladu s bezestavovým HTTP. Hledal koncept, který by byl přátelský pro uživatele, SEO i vývojáře. A tak se začalo rodit Nette.

.[note]
Název Nette vznikl náhodou v koupelně, když autor zahlédl nádobu s gelem na holení Gillette, natočenou tak, že bylo vidět jen *llette*.

Následovaly tisíce hodin bádání, přemýšlení a přepisování. V zaprášené garáži ve vesnici kdesi za Brnem vznikaly první obrysy budoucího frameworku. Základem architektury se stal vzor MVC, který tehdy používal dnes již zapomenutý PHP framework Mojavi a později byl zpopularizovaný díky humbuku kolem Ruby on Rails. Jedním z inspiračních zdrojů byl dokonce i nikdy nezveřejněný framework phpBase Honzy Tichého.

Na blogu autora začaly vycházet články o chystaném Nette. Žertovalo se, že jde o vaporware. Pak ale v říjnu 2007 na pražské konferenci PHP Seminář David Nette veřejně představil. Mimochodem, z této konference se o rok později vyvinulo WebExpo, později jedna z největších IT konferencí v Evropě. Už tehdy se Nette pochlubilo řadou originálních konceptů, jako zmíněný komponentový model, obousměrný router, specifický způsob odkazování mezi presentery atd. Mělo formuláře, vyřešenou autentizaci, kešování atd. Všechno se v Nette používá v původním pojetí dodnes.

.[note]
V Nette se místo pojmu *controller* používá *presenter*, protože v kódu prý bylo příliš mnoho slov začínající *con* (controller, front controller, control, config, container, ...)

Na konci roku 2007 David Grudl zveřejnil i kód a světlo světa tak spatřila verze Nette 0.7. Framework na sebe ihned strhl ohromnou pozornost. Vytvořila se okolo něj nadšená komunita programátorů, která se začala každý měsíc scházet na akci Posobota. V komunitě byla řada dnešních osobností, například Ondřej Mirtes, autor skvělého nástroje PHPStan. Vývoj Nette uháněl kupředu a v dalších dvou letech vyšly verze 0.8 a 0.9, kde byly položeny základy téměř všech dnešních částí frameworku. Včetně AJAXových snippetů, které o 14 let předběhly Hotwire pro Ruby on Rails nebo Symfony UX Turbo.

Jedna zásadní věc ale v tehdejším Nette chyběla. Dependecy injection container (DIC). Nette používalo tzv. *service locator* a záměr byl přejít právě na dependecy injection. Jak ale takovou věc navrhnout? David Grudl, který tehdy neměl s DI zkušenost, zašel na oběd s Vaškem Purchartem, který DI používal asi půl roku. Společně téma prodiskutovali a David zahájil práci na Nette DI, knihovně, která zcela převrátila způsob, jakým se uvažuje nad návrhem aplikací. DI kontejner se stal jednou nejpovedenějších částí frameworku. A dal později vzniknout i dvěma spin-offům: formátu Neon a knihovně Schema.

.[note]
Posun na dependency injection si vyžádal dost času a na novou verzi Nette se čekalo pár let. Proto, když konečně vyšla, nesla rovnou číslovku 2. Verze Nette 1 tedy neexistuje.

Nette v roce 2012 verzí 2.0 odstartovalo svou moderní historii. Přineslo také Nette Database, jejíž součástí byl i neobyčejně šikovný nástroj pro práci s databází, dnes nazývaný Explorer. Tuto knihovnu původně naprogramoval Jakub Vrána, soused Davida Grudla a autor populárního nástroje Adminer. Jejího dalšího vývoje se poté na tři roky ujal Jan Škrášek.

V roce 2014 vyšlo Nette 2.1 v krátké době následové Nette 2.2. Jak je to možné? Verze 2.2 byla stejná jako verze 2.1, jen rozdělená do dvaceti samostatných balíčků. Ve světě PHP se zabydlel nástroj Composer a změnil způsob, jak pojímat tvorbu knihoven. Nette tak přestalo být monolitem a rozpadlo se do menších nezávislých částí. Každá se svým repozitářem, issue trackerem a vlastním tempem vývoje a verzováním. V Nette tak nemusí docházet k absurditám běžným v monolitických frameworcích, kdy vyjde nová verze balíčku, ačkoliv se v něm vůbec nic nezměnilo. Samotné rozdělení Git repozitářů obnášelo několik týdnů příprav a stovky hodin strojového času.

Nette se také umístilo na úžasném 3. místě v celosvětové anketě o nejlepší PHP framework pořádané magazínem Sitepoint.


{{toc:no}}
{{leftbar: @menu-common}}

Historie Nette

Počátek vzniku Nette sahá do roku 2004, kdy jeho autor David Grudl začal hledat vhodný framework, ve kterém by mohl psát aplikace, protože čisté PHP k tomu již nestačilo. Žádné z tehdy dostupných řešení mu nevyhovovalo, tak začal postupně načrtávat rysy nového frameworku, který později dostal jméno Nette.

V té době ještě neexistovaly současné frameworky jako Symfony, Laravel nebo třeba Ruby on Rails. Ve světě Javy byl standardem framework JSF (JavaServer Faces) a v konkurenčním .NET zase ASP.NET Webforms. Oba umožňovaly stavět stránky pomocí znovupoužitelných UI komponent. Jejich způsoby abstrakce a snahy vytvořit stavovost nad bezstavovým protokolem HTTP pomocí session nebo tzv. postbacku považoval David za chybné a od základu nefunkční. Působily řadu obtíží uživatelům i vyhledávačům. Například pokud jste si uložili odkaz, s překvapením jste později pod ním našli jiný obsah.

Samotná možnost skládat stránky ze znovupoužitelných UI komponent Davida fascinovala, dobře ji znal z Delphi, tehdy populárního nástroje pro tvorbu desktopových aplikací. Líbily se mu tržiště s opensource komponentami pro Delphi. Snažil se proto vyřešit otázku, jak vytvořit komponentový framework, který by naopak fungoval v naprostém souladu s bezestavovým HTTP. Hledal koncept, který by byl přátelský pro uživatele, SEO i vývojáře. A tak se začalo rodit Nette.

Název Nette vznikl náhodou v koupelně, když autor zahlédl nádobu s gelem na holení Gillette, natočenou tak, že bylo vidět jen llette.

Následovaly tisíce hodin bádání, přemýšlení a přepisování. V zaprášené garáži ve vesnici kdesi za Brnem vznikaly první obrysy budoucího frameworku. Základem architektury se stal vzor MVC, který tehdy používal dnes již zapomenutý PHP framework Mojavi a později byl zpopularizovaný díky humbuku kolem Ruby on Rails. Jedním z inspiračních zdrojů byl dokonce i nikdy nezveřejněný framework phpBase Honzy Tichého.

Na blogu autora začaly vycházet články o chystaném Nette. Žertovalo se, že jde o vaporware. Pak ale v říjnu 2007 na pražské konferenci PHP Seminář David Nette veřejně představil. Mimochodem, z této konference se o rok později vyvinulo WebExpo, později jedna z největších IT konferencí v Evropě. Už tehdy se Nette pochlubilo řadou originálních konceptů, jako zmíněný komponentový model, obousměrný router, specifický způsob odkazování mezi presentery atd. Mělo formuláře, vyřešenou autentizaci, kešování atd. Všechno se v Nette používá v původním pojetí dodnes.

V Nette se místo pojmu controller používá presenter, protože v kódu prý bylo příliš mnoho slov začínající con (controller, front controller, control, config, container, …)

Na konci roku 2007 David Grudl zveřejnil i kód a světlo světa tak spatřila verze Nette 0.7. Framework na sebe ihned strhl ohromnou pozornost. Vytvořila se okolo něj nadšená komunita programátorů, která se začala každý měsíc scházet na akci Posobota. V komunitě byla řada dnešních osobností, například Ondřej Mirtes, autor skvělého nástroje PHPStan. Vývoj Nette uháněl kupředu a v dalších dvou letech vyšly verze 0.8 a 0.9, kde byly položeny základy téměř všech dnešních částí frameworku. Včetně AJAXových snippetů, které o 14 let předběhly Hotwire pro Ruby on Rails nebo Symfony UX Turbo.

Jedna zásadní věc ale v tehdejším Nette chyběla. Dependecy injection container (DIC). Nette používalo tzv. service locator a záměr byl přejít právě na dependecy injection. Jak ale takovou věc navrhnout? David Grudl, který tehdy neměl s DI zkušenost, zašel na oběd s Vaškem Purchartem, který DI používal asi půl roku. Společně téma prodiskutovali a David zahájil práci na Nette DI, knihovně, která zcela převrátila způsob, jakým se uvažuje nad návrhem aplikací. DI kontejner se stal jednou nejpovedenějších částí frameworku. A dal později vzniknout i dvěma spin-offům: formátu Neon a knihovně Schema.

Posun na dependency injection si vyžádal dost času a na novou verzi Nette se čekalo pár let. Proto, když konečně vyšla, nesla rovnou číslovku 2. Verze Nette 1 tedy neexistuje.

Nette v roce 2012 verzí 2.0 odstartovalo svou moderní historii. Přineslo také Nette Database, jejíž součástí byl i neobyčejně šikovný nástroj pro práci s databází, dnes nazývaný Explorer. Tuto knihovnu původně naprogramoval Jakub Vrána, soused Davida Grudla a autor populárního nástroje Adminer. Jejího dalšího vývoje se poté na tři roky ujal Jan Škrášek.

V roce 2014 vyšlo Nette 2.1 v krátké době následové Nette 2.2. Jak je to možné? Verze 2.2 byla stejná jako verze 2.1, jen rozdělená do dvaceti samostatných balíčků. Ve světě PHP se zabydlel nástroj Composer a změnil způsob, jak pojímat tvorbu knihoven. Nette tak přestalo být monolitem a rozpadlo se do menších nezávislých částí. Každá se svým repozitářem, issue trackerem a vlastním tempem vývoje a verzováním. V Nette tak nemusí docházet k absurditám běžným v monolitických frameworcích, kdy vyjde nová verze balíčku, ačkoliv se v něm vůbec nic nezměnilo. Samotné rozdělení Git repozitářů obnášelo několik týdnů příprav a stovky hodin strojového času.

Nette se také umístilo na úžasném 3. místě v celosvětové anketě o nejlepší PHP framework pořádané magazínem Sitepoint.