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
fhliva #1
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.
Kraus #2
#1 fhlivo, Který framework drží zpětnou kompatibilitu 10 let?
David Grudl #3
#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.
Tomáš Votruba #4
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í.
Jan Kuchař #5
#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!
Tomáš Votruba #6
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ší
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.