Na navigaci | Klávesové zkratky

Co se chystá v Nette?

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:

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 a getValues() vracet objekt entity
  • upravit objektový návrh tak, aby setValue() a getValue() 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

  1. Pavel Janda #1

    avatar

    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. :)

    před 6 lety | reagoval [2] aDAm [5] taco
  2. aDAm #2

    avatar

    #1 Pavle Jando, A já zase jsonapi formát a tady se asi svět api neshodne. Vše má své pro a proti.

    před 6 lety | reagoval [3] Pavel Janda [5] taco
  3. Pavel Janda #3

    avatar

    #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.

    před 6 lety
  4. 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?

    před 6 lety
  5. taco #5

    avatar

    #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í.

    před 6 lety
  6. Michal Katuščák #6

    avatar

    Přeji ať se vše zadaří :)

    před 6 lety
  7. Jabloň #7

    avatar

    Takže Nette 2.4 je nyní bez podpory a Nette 3.0 ještě nevyšlo? To je docela fail.

    před 6 lety | reagoval [8] David Grudl
  8. David Grudl #8

    avatar

    #7 Jabloni, no to jo. Věřím, že se to podaří vyřešit, a další Nette vyjde, a vyjde co nejdřív.

    před 6 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.


phpFashion © 2004, 2024 David Grudl | o blogu

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.