Co přinesou příští verze Nette Frameworku a jaký je plán pro další vývoj?
Nette je tvořeno řadou knihoven, z nichž některé patří mezi světovou špičku: Latte je nejbezpečnější šablonovací systém, Tracy je mnohými považován za nejpřívětivější debugovací nástroj, Dependency Injection Container patří mezi ty nejpohodlněji použitelné. Spousta konceptů vznikla šťastnou rukou a fungují v prakticky nezměněné podobě už 10 let, například formuláře nebo komponentový systém presenterů.
Nicméně ve všech oblastech je hodně příležitostí co vylepšovat a inovovat. A nápadů je spousta.
Brzký příchod Nette 3
Hlavní prioritou je brzký příchod nové verze Nette 3. Ta bude určená pro PHP 7.1 a bude využívat jeho zásadních novinek, jako:
- poběží ve striktním režimu
- kód bude používat skalární typehinty
- metody budou mít návratové typehinty
Zároveň je záměr připravit:
- nástroj pro automatizovanou aktualizaci kódu pro novou verzi frameworku (jako tomu bývalo u Nette 0.9 a 2.0)
- aktualizovat dokumentaci včetně příkladů
- vygenerovat API dokumentaci na webu https://api.nette.org (v současnosti chybí generátor dokumentace)
- zajistit kompatibilitu s připravovaným PHP 7.3
Do Nette 3 budou zahrnout i další featury:
Application
- oddělit routování do samostatného balíčku
- CSRF ochrana pro odkazy na signály
DI
- autodiscovery: automatická registrace služeb pomocí masky, podobně jako u presenterů
- validovatelné schéma pro formát NEON
- podpora pro předání pole služeb určitého typu
(
@param Service[]
) - podpora pro předání pole služeb pomocí tagu
Forms
- automatická CSRF ochrana
- ukázka rendereru pro Bootstrap 4
Latte
- generovat „source map“ kterým bude rozumět Tracy
- podpora optional chaining
$var?->call()?->elem[1]?->item
Tracy
- zrychlení dumpování pomocí JavaScriptu
- podpora source maps Latte
Nette 4
Ihned po vydání Nette 3 by začal vývoj Nette 4. Hlavní novinkou by byla změna vnitřní architektury na tzv. middleware. Komponenta pro zpracování a sanitizaci HTTP požadavku, router, PresenterFactory i samotný presenter by byly vrstvy middleware, mezi které bude možné snadno včlenit další vrstvy, nebo tyhle existující nahradit. Mělo by tak být mnohem snadnější provozování různých aplikací či dokonce frameworků na jednom webu. Každá vrstva by mohla požadavek odmítnout, třeba router by mohl legitimně vyhodit chybu 404. Zároveň by nové řešení mělo být plně kompatibilní se stávajícími presentery, takže bude možné vytvářet aplikace využívající jak nových middleware-presenterů, tak i presenterů současných.
Tato změna architektury vyřeší řadu issues, které ve frameworku existují už dlouho, ale nebylo snadné je zprovodit ze světa:
- RequestFactory: rejects invalid URL [WIP]
- Http POST with Content-type: application/json
- Character ? is ignored when canonize url site.com/? to site.com/
- Http\RequestFactory: added workaround for exceeded post_max_size
- redirect() in component does not respect server port
- MessagesStorage & RequestStorage
- Refactored flash session to Http\FlashSession
Další plány
Alespoň bodově se pokusím zmínit další plány pro důležité balíčky. Ve které verzi budou implementované je zatím otevřené.
Application
- nativní presenter pro REST a API
- snadnější používání LinkGenerator pod CLI
- nahradit přímé odesílání HTTP hlaviček (přes HttpResponse) abstrakcí
- zrychlit generování odkazů kešováním
- možnost vkládat bloky šablony do komponent
- vyřešit problém s odkazem
this
nebo formulářem v Error presenteru - nativní podpora oprávnění na úrovní presenterů a akcí,
makro
n:if-allowed
- cmdline nástroj pro předgenerování presenterů a šablon
DI
- vyřešit problém s prioritou volání rozšíření
Forms
- vytvořit nativní podporu pro plně dynamické formuláře
- podpora pro nativní validaci přes AJAX
- provázání na třídy entit,
setDefaults()
bude přijímat agetValues()
vracet objekt entity - upravit objektový návrh tak, aby
setValue()
agetValue()
mohly mít správné typehinty
Latte
- vytvoření nového AST parseru, který posune možnosti maker na novou úroveň
- možnost spojení šablony se třídu (a jejími properties), aby fungovalo našeptávání nebo statická kontrola i v šabloně
- implementovat sandbox režim
- zjednodušit ověřování validity šablon
- doplnit podporu pro další knihovny a frameworky, vytvořit návody nebo převodníky pro ostatní šablonovací systémy
Web a forum
- v plánu je změnit navigaci a rozčlenění podle jednotlivých komponent
- nahradit fórum za nějaké novější, už kvůli bezpečnosti
- a samozřejmě postupné vylepšování dokumentace jako doposud
Je toho prostě opravdu hodně.
Komentáře
Pavel Janda #1
Snad se vše zadaří.
S tím RESTem bych byl opatrný.. Netvrdím, že rest bude ustupovat, ale já například na všech možných projektech momentálně používám json-rpc a rád bych tlačit proto buffer a spol. Pár kolegů občas pracuje s graph ql.
Vlastně jo, tvrdím to. :)
aDAm #2
#1 Pavle Jando, A já zase jsonapi formát a tady se asi svět api neshodne. Vše má své pro a proti.
Pavel Janda #3
#2 aDAme, No jasně. Já tím chtěl říct přesně to, že způsobů dorozumívání se je mnoho a nemá proto smysl konkretizovat presentery na „rest-presenter“, ale spíš naopak.
Nettista #4
Pochopil jsem to správně, že Nette 2.4 skončila podpora a teď není verze s podporou, než se vydá 3.0?
taco #5
#1 Pavle Jando, #2 aDAm Tak pokud to bude samostatný repo, které se jen může, nebo nemusí nabundovat… Ostatně takto to Nette dělá už nyní.
Michal Katuščák #6
Přeji ať se vše zadaří :)
Jabloň #7
Takže Nette 2.4 je nyní bez podpory a Nette 3.0 ještě nevyšlo? To je docela fail.
David Grudl #8
#7 Jabloni, no to jo. Věřím, že se to podaří vyřešit, a další Nette vyjde, a vyjde co nejdřív.
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.