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.