Nette Documentation Preview

syntax
Nette története
***************

.[perex]
A Nette eredete 2004-re nyúlik vissza, amikor szerzője, David Grudl elkezdett keresni egy megfelelő keretrendszert, amelyben alkalmazásokat írhat, mivel a tiszta PHP már nem volt elegendő. Az akkoriban elérhető megoldások egyike sem felelt meg neki, ezért fokozatosan elkezdte felvázolni egy új keretrendszer jellemzőit, amely később a Nette nevet kapta.

Akkoriban még nem léteztek az olyan jelenlegi keretrendszerek, mint a Symfony, a Laravel vagy a Ruby on Rails. A Java világában a JSF (JavaServer Faces) volt a szabvány, a konkurens .NET birodalomban pedig az ASP.NET Webforms volt az uralkodó keretrendszer. Mindkettő lehetővé tette az oldalak építését újrafelhasználható UI-komponensek felhasználásával. David hibásnak és alapvetően elrontottnak tartotta absztrakciós módszereiket és a stateless HTTP protokollon keresztül, munkamenetek vagy postbackek segítségével történő állapotmentesség létrehozására tett kísérleteiket. Számos nehézséget okoztak a felhasználók és a keresőmotorok számára. Ha például elmentettünk egy linket, meglepődtünk, hogy később más tartalmat találtunk alatta.

Az oldalak újrafelhasználható UI-komponensekből való összeállításának lehetősége lenyűgözte Davidet, aki ezt jól ismerte az akkoriban az asztali alkalmazások építésére használt népszerű Delphiből. Megtetszettek neki a Delphi nyílt forráskódú komponenseit tartalmazó piacterek. Ezért megpróbálta megoldani azt a kérdést, hogyan lehetne olyan komponens-keretet létrehozni, amely viszont teljes összhangban működne a stateless HTTP-vel. Olyan koncepciót keresett, amely felhasználó-, SEO- és fejlesztőbarát. Így született meg a Nette.

.[note]
A Nette név véletlenül jött létre a fürdőszobában, amikor a szerző megpillantott egy üveg Gillette borotvagélt, amelyet úgy forgattak el, hogy csak a *llette* látszott.

Több ezer óra kutatás, gondolkodás és újraírás következett. Egy poros garázsban, egy Brno melletti faluban, valahol Brno mellett, a jövőbeli keret első körvonalai készültek. Az architektúra alapja az MVC minta volt, amelyet akkoriban a mára már elfeledett PHP-keretrendszer, a Mojavi használt, majd később a Ruby on Rails körüli felhajtás népszerűsített. Az egyik inspiráló forrás még Honza Tichý soha meg nem jelent phpBase keretrendszere volt.

A készülő Nette-ről cikkek kezdtek megjelenni a szerző blogján. Viccelődtek, hogy vaporware-ről van szó. De aztán 2007 októberében, a prágai PHP Seminar konferencián David nyilvánosan bemutatta a Nette-et. Ebből a konferenciából egyébként egy évvel később WebExpo lett, amely később Európa egyik legnagyobb informatikai konferenciája lett. A Nette már akkor is büszkén mutatott be számos eredeti koncepciót, például a már említett komponensmodellt, a kétirányú útválasztót, az előadók közötti kapcsolat sajátos módját stb. Voltak űrlapok, hitelesítés, gyorsítótárazás stb. A Nette-ben a mai napig mindent az eredeti koncepcióban használnak.

.[note]
A Nette a *presenter*-t használja a *controller* helyett, mert állítólag túl sok *con* kezdetű szó volt a kódban (controller, front controller, control, config, container, ...).

2007 végén David Grudl publikálta a kódot, és megjelent a Nette 0.7-es verziója. Egy lelkes programozói közösség alakult ki körülötte, és elkezdtek havonta találkozni a Posobota rendezvényen. A közösségben sok mai nagyágyú is helyet kapott, mint például Ondrej Mirtes, a nagyszerű PHPStan eszköz szerzője. A Nette fejlesztése előrehaladt, és a következő két évben megjelent a 0.8-as és a 0.9-es verzió, amelyek megalapozták a keretrendszer szinte minden mai részét. Beleértve az AJAX szeleteket, amelyek 14 évvel megelőzték a Hotwire for Ruby on Rails vagy a Symfony UX Turbo-t.

De egy döntő dolog hiányzott akkoriban a Nette-ből. A Dependecy injection container (DIC). A Nette egy *service locator*-t használt, és a dependecy injection-re akartak áttérni. De hogyan tervezzünk ilyet? David Grudl, akinek akkoriban még nem volt tapasztalata a DI-vel, elment ebédelni Vasek Purcharttal, aki már körülbelül fél éve használta a DI-t. Együtt megvitatták a témát, és David elkezdett dolgozni a Nette DI-n, egy olyan könyvtáron, amely teljesen forradalmasította az alkalmazás-tervezésről való gondolkodásunkat. A DI konténer a keretrendszer egyik legsikeresebb része lett. És két mellékágat is eredményezett: a Neon formátumot és a Schema könyvtárat.

.[note]
A függőségi injektálásra való áttérés sok időt vett igénybe, és néhány évet vártunk a Nette új verziójára. Ezért, amikor végül megjelent, a 2. számot kapta. Tehát a Nette 1. verziója nem létezik.

A Nette modern története 2012-ben kezdődött a 2.0-s verzióval. Ez hozta el a Nette Database-t is, amely egy rendkívül praktikus adatbázis-kezelő eszközt tartalmazott, amelyet most Explorer-nek hívnak. Ezt a könyvtárat eredetileg Jakub Vrána, David Grudl szomszédja és a népszerű Adminer eszköz szerzője programozta. A további fejlesztését aztán három évig Jan Škrášek vette át.

2014-ben jelent meg a Nette 2.1, amelyet nem sokkal később a Nette 2.2 követett. Hogyan lehetséges ez? A 2.2-es verzió ugyanaz volt, mint a 2.1-es verzió, csak húsz külön csomagra osztva. A Composer eszköz meghódította a PHP világát, és megváltoztatta a könyvtárkészítésről való gondolkodásunkat. A Nette megszűnt monolit lenni, és kisebb független részekre bomlott. Mindegyiknek saját tárolóhelye, problémakövetője és saját fejlesztési és verziókezelési folyamata volt. Így a Nette-nek nem kell átesnie a monolitikus keretrendszereknél megszokott abszurditásokon, amikor egy csomag új verziója jön ki, holott semmi sem változott. A Git-tárházak tényleges felosztása több hetes előkészületet és több száz óra gépi időt vett igénybe.

A Nette a Sitepoint magazin által szervezett, a legjobb PHP-keretrendszerről szóló globális szavazáson is elképesztő 3. helyezést ért el.



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

Nette története

A Nette eredete 2004-re nyúlik vissza, amikor szerzője, David Grudl elkezdett keresni egy megfelelő keretrendszert, amelyben alkalmazásokat írhat, mivel a tiszta PHP már nem volt elegendő. Az akkoriban elérhető megoldások egyike sem felelt meg neki, ezért fokozatosan elkezdte felvázolni egy új keretrendszer jellemzőit, amely később a Nette nevet kapta.

Akkoriban még nem léteztek az olyan jelenlegi keretrendszerek, mint a Symfony, a Laravel vagy a Ruby on Rails. A Java világában a JSF (JavaServer Faces) volt a szabvány, a konkurens .NET birodalomban pedig az ASP.NET Webforms volt az uralkodó keretrendszer. Mindkettő lehetővé tette az oldalak építését újrafelhasználható UI-komponensek felhasználásával. David hibásnak és alapvetően elrontottnak tartotta absztrakciós módszereiket és a stateless HTTP protokollon keresztül, munkamenetek vagy postbackek segítségével történő állapotmentesség létrehozására tett kísérleteiket. Számos nehézséget okoztak a felhasználók és a keresőmotorok számára. Ha például elmentettünk egy linket, meglepődtünk, hogy később más tartalmat találtunk alatta.

Az oldalak újrafelhasználható UI-komponensekből való összeállításának lehetősége lenyűgözte Davidet, aki ezt jól ismerte az akkoriban az asztali alkalmazások építésére használt népszerű Delphiből. Megtetszettek neki a Delphi nyílt forráskódú komponenseit tartalmazó piacterek. Ezért megpróbálta megoldani azt a kérdést, hogyan lehetne olyan komponens-keretet létrehozni, amely viszont teljes összhangban működne a stateless HTTP-vel. Olyan koncepciót keresett, amely felhasználó-, SEO- és fejlesztőbarát. Így született meg a Nette.

A Nette név véletlenül jött létre a fürdőszobában, amikor a szerző megpillantott egy üveg Gillette borotvagélt, amelyet úgy forgattak el, hogy csak a llette látszott.

Több ezer óra kutatás, gondolkodás és újraírás következett. Egy poros garázsban, egy Brno melletti faluban, valahol Brno mellett, a jövőbeli keret első körvonalai készültek. Az architektúra alapja az MVC minta volt, amelyet akkoriban a mára már elfeledett PHP-keretrendszer, a Mojavi használt, majd később a Ruby on Rails körüli felhajtás népszerűsített. Az egyik inspiráló forrás még Honza Tichý soha meg nem jelent phpBase keretrendszere volt.

A készülő Nette-ről cikkek kezdtek megjelenni a szerző blogján. Viccelődtek, hogy vaporware-ről van szó. De aztán 2007 októberében, a prágai PHP Seminar konferencián David nyilvánosan bemutatta a Nette-et. Ebből a konferenciából egyébként egy évvel később WebExpo lett, amely később Európa egyik legnagyobb informatikai konferenciája lett. A Nette már akkor is büszkén mutatott be számos eredeti koncepciót, például a már említett komponensmodellt, a kétirányú útválasztót, az előadók közötti kapcsolat sajátos módját stb. Voltak űrlapok, hitelesítés, gyorsítótárazás stb. A Nette-ben a mai napig mindent az eredeti koncepcióban használnak.

A Nette a presenter-t használja a controller helyett, mert állítólag túl sok con kezdetű szó volt a kódban (controller, front controller, control, config, container, …).

2007 végén David Grudl publikálta a kódot, és megjelent a Nette 0.7-es verziója. Egy lelkes programozói közösség alakult ki körülötte, és elkezdtek havonta találkozni a Posobota rendezvényen. A közösségben sok mai nagyágyú is helyet kapott, mint például Ondrej Mirtes, a nagyszerű PHPStan eszköz szerzője. A Nette fejlesztése előrehaladt, és a következő két évben megjelent a 0.8-as és a 0.9-es verzió, amelyek megalapozták a keretrendszer szinte minden mai részét. Beleértve az AJAX szeleteket, amelyek 14 évvel megelőzték a Hotwire for Ruby on Rails vagy a Symfony UX Turbo-t.

De egy döntő dolog hiányzott akkoriban a Nette-ből. A Dependecy injection container (DIC). A Nette egy service locator-t használt, és a dependecy injection-re akartak áttérni. De hogyan tervezzünk ilyet? David Grudl, akinek akkoriban még nem volt tapasztalata a DI-vel, elment ebédelni Vasek Purcharttal, aki már körülbelül fél éve használta a DI-t. Együtt megvitatták a témát, és David elkezdett dolgozni a Nette DI-n, egy olyan könyvtáron, amely teljesen forradalmasította az alkalmazás-tervezésről való gondolkodásunkat. A DI konténer a keretrendszer egyik legsikeresebb része lett. És két mellékágat is eredményezett: a Neon formátumot és a Schema könyvtárat.

A függőségi injektálásra való áttérés sok időt vett igénybe, és néhány évet vártunk a Nette új verziójára. Ezért, amikor végül megjelent, a 2. számot kapta. Tehát a Nette 1. verziója nem létezik.

A Nette modern története 2012-ben kezdődött a 2.0-s verzióval. Ez hozta el a Nette Database-t is, amely egy rendkívül praktikus adatbázis-kezelő eszközt tartalmazott, amelyet most Explorer-nek hívnak. Ezt a könyvtárat eredetileg Jakub Vrána, David Grudl szomszédja és a népszerű Adminer eszköz szerzője programozta. A további fejlesztését aztán három évig Jan Škrášek vette át.

2014-ben jelent meg a Nette 2.1, amelyet nem sokkal később a Nette 2.2 követett. Hogyan lehetséges ez? A 2.2-es verzió ugyanaz volt, mint a 2.1-es verzió, csak húsz külön csomagra osztva. A Composer eszköz meghódította a PHP világát, és megváltoztatta a könyvtárkészítésről való gondolkodásunkat. A Nette megszűnt monolit lenni, és kisebb független részekre bomlott. Mindegyiknek saját tárolóhelye, problémakövetője és saját fejlesztési és verziókezelési folyamata volt. Így a Nette-nek nem kell átesnie a monolitikus keretrendszereknél megszokott abszurditásokon, amikor egy csomag új verziója jön ki, holott semmi sem változott. A Git-tárházak tényleges felosztása több hetes előkészületet és több száz óra gépi időt vett igénybe.

A Nette a Sitepoint magazin által szervezett, a legjobb PHP-keretrendszerről szóló globális szavazáson is elképesztő 3. helyezést ért el.