Nette 2.2 vs 2.3 a vývoj doplňků

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
akadlec
Člen | 1326
+
+1
-

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
+
0
-

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)

akadlec
Člen | 1326
+
0
-

Jo tohle jde tak nějak fixnout aby to šlo na obou ale co třeba tohle:

Nette\Forms\Controls\BaseControl::exportRules() is deprecated; use Nette\Forms\Helpers::exportRules() instead.

enumag
Člen | 2118
+
0
-

Tam už asi nezbývá než použít method_exists.

akadlec
Člen | 1326
+
0
-

Hezky…

Kurňa akorát se mě některé testy chovají divně :( v jedněch nette.latte projde a v jiných zase ne a přitom testy jsou nastaveny stejně.

Ještě tedy bojuji s generováním odkazů v testovacích presenterech :(

David Grudl
Nette Core | 8228
+
+3
-

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

akadlec
Člen | 1326
+
0
-

Jasný, no já to už nějak více méně poladil ;)