Nette 2.2 vs 2.3 a vývoj doplňků
- akadlec
- Člen | 1326
Jak na tom jste vy ostatní s doplňky co děláte pro nette? Mám teď nějakou sadu co sem udělal, jsou tam i testy které jsem měl psané jako doplňky tedy pro nette 2.2 a na travisu jsem jel dvě verze nette 2.2.0 a aktuální což byla 2.2.x jenže teď s příchodem 2.3 jsou skoro všechny testy v p..... :( co sem zatím koukal tak to failuje na tom že chybí služba nette.latte, že se používají nějaké deprecated parametry např v Url constructoru, či ve formulářích.
Jak to řešíte vy? oddělenou větví pro nette 2.2.x a novou pro 2.3?
- enumag
- Člen | 2118
Většina nekompatibilit lze vyřešit pomocí podmínek v Extension. Zrovna latte bych řešil asi takhle:
// beforeCompile
$builder->getDefinition($builder->getByType('Nette\Bridges\ApplicationLatte\ILatteFactory') ?: 'nette.latteFactory')
->...;
Když manupuluješ s cizími službami, je lepší použít getByType abys nemusel spoléhat na název extension ani název služby. To ale funguje jen v Nette 2.3, proto ten ternární operátor a fallback pro 2.2.
Službu nette.latte neřeš vůbec, ta byla už ve 2.2 deprecated.
Deprecated parametry už nejspíš ve 2.2 mají jiný způsob jak napsat totéž.
Editoval enumag (2. 3. 2015 9:24)
- David Grudl
- Nette Core | 8228
Hodně věcí by se dalo řešit přímo na úrovni frameworku, tj. poslat PR s tím, že určité chování se třeba často u doplňků používá a v nové verzi nefunguje nebo že vyhazování notice komplikuje kód, který by jinak mohl bez úprav běžet na více verzích. U některých věcí mě třeba vůbec nenapadne, že můžou být používané.