Na navigaci | Klávesové zkratky

Jak správně updatovat Nette

Potřebujete aktualizovat projekt běžící na Nette 2.0 na nejnovější verzi? Tady je pár tipů, jak na to.

Stoupejte po jednotlivých verzích

Tj. nejprve aktualizujte na Nette 2.1, poté 2.2, a tak dále. Důvod je ten, že pokud se v Nette nějaká vlastnost změní nebo odstraní, děje se tak v postupných krocích trvajících i několik let. Nejprve je vlastnost jako deprecated jen označena v kódu (silently deprecated), v další velké verzi emituje hlášku E_USER_DEPRECATED, ale funkčnost je zachována, a teprve ve třetí verzi je odstraněna.

Nette se snaží, aby ony hlášky byly maximálně srozumitelné a návodné (např. Syntax {!$var} is deprecated, use {$var|noescape} on line 123), abyste mohli zastaralé věci snadno nahradit.

Pokud byste přeskočili několik verzí, mohli byste přijít o tuto důležitou fázi.

Začínejte bez E_USER_DEPRECATED

Před nasazováním nové verze je vhodné nejprve vypnout hlášení chyb E_USER_DEPRECATED:

$configurator->enableDebugger();
error_reporting(~E_USER_DEPRECATED); // všimněte si ~

Nyní můžete vyzkoušet, zda vše funguje jak má, bez upozorňování na zapovězené věci. Pokud vše funguje, hlášky zase povolte a upravte podle nich kód.

Čtěte dokumentaci

Všechny migrační návody najdete v dokumentaci. Pokud byste ve firmě potřebovali s aktualizací pomoci, jsem vám k dispozici.

Komentáře

  1. fhliva #1

    avatar

    Taketo zalezitosti by vo frameworkoch vôbec nemali byt. ak raz nejaka vlastnost je, tak tam musi byt aj za 10 rokov a nemoze sa kazdu chvilu nazyvat inak. Kedysi som prave koli nekompatibilnym zmenam odysiel od nette. S kazdou podverziou som musel nieco menit a zistovat na fore preco to zrazu nefunguje a preco mam zase pracu navyse.

  2. Kraus #2

    avatar

    #1 fhlivo, Který framework drží zpětnou kompatibilitu 10 let?

    před 8 lety
  3. David Grudl #3

    avatar

    #1 fhlivo, to je nedílná součást vývoje, děje se tak u Nette jakož i každého jiného frameworku. Čím je framework dospělejší, tím se změn odehrává méně.

    Navíc u Nette postupuji celou dobu evolučně, to znamená, že nikdy nedošlo ke vzniku verze, která by byla totálně nekompatibilní s předchozí, jako se stalo třeba u Zendu nebo Symfony.

    před 8 lety | reagoval [5] Jan Kuchař
  4. Tomáš Votruba #4

    avatar

    Diky za zmínku postupného upgradu!

    #1 fhlivo,
    Ideální stav je 10 let BC, ale realita pracuje s omezeným množstvím energie a lidí.

    To je IMHO otázka priorit, resp. balanc mezi stabilitou a rychlostí vývoje. Na samotný článek by to vydalo. Doctrine je třeba stabilní, ale ne progresivní. Přestává stíhat řešit potřeby nových uživatelů.

    Doporučuji udržovat aspoň půl roku php open-source projekt na Githubu, kde toto know how přirozeně přichází.

    před 8 lety
  5. Jan Kuchař #5

    avatar

    #3 Davide Grudle, Mohu jen potvrdit. Nette je skvěle zpětně kompatibilní. Přechod z Nette 0.9 na 2.4 mi zabral na poměrně rozsáhlé aplikaci jedno odpoledne. To naprosto skvělý výsledek!

    před 7 lety
  6. Tomáš Votruba #6

    avatar

    Pro budoucí příchozí: dnes už můžeš na upgrade použít Rectora: https://github.com/…orphp/rector

    Zvládá třeba Nette\Object na SmartObject trait, anotaci @method na reálné metody a další

    před 7 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í.