[2009–10–14] OldPresenter, OldLatteMacros
- David Grudl
- Nette Core | 8227
V souvislosti se změnami v šablonovacím systému a podpoře snippetů vznikla otázka, jak zajistit zpětnou kompatibilitu. Jako čistý způsob se mi jeví vytvoření třídy OldPresenter, potomka Presenteru, který bude změněné záležitosti řešit starým způsobem.
Od poslední revize jsou tak $oldLayoutMode
a
$oldModuleMode
v režii třídy OldPresenter. Vzniká tak
velmi drobný BC break: k dosažení zpětné kompatiblity je potřeba
upravit BasePresenter tak, aby byl potomkem OldPresenter.
OldPresenter nechává šablonovací makra zpracovávat třídou OldLatteMacros, která zachová kompatibilitu u snippetů.
- kravčo
- Člen | 721
David Grudl napsal(a):
Od poslední revize jsou tak
$oldLayoutMode
a$oldModuleMode
v režii třídy OldPresenter. Vzniká tak velmi drobný BC break: k dosažení zpětné kompatiblity je potřeba upravit BasePresenter tak, aby byl potomkem OldPresenter.
Prepínač zostáva, no nie v triede Presenter
, ale v triede
pre spätnú kompatibilitu OldPresenter
. Pri správnom návrhu a
použití BasePresenter
a ako predka ostatných prezenterov stačí
zameniť jeho predka a všetko funguje po starom…
<?php
-class BasePresenter extends Presenter
+class BasePresenter extends OldPresenter
{
...
Editoval kravčo (15. 10. 2009 1:00)
- David Grudl
- Nette Core | 8227
Jen pár poznámek:
- OldPresenter je součást vývojové verze, takže se to klidně může změnit, jestli je to blbost
- někdy se bude muset výchozí nastavení různých
$old...
proměnných nastavit na FALSE a říkám si, že přidání řádkupublic $old... = TRUE
nebo změnaPresenter
zaOldPresenter
je stejně (ne)komplikovaná - ale řešení s OldPresenter je asi čistější
- zároveň naznačuje, že kompatibilitu lze a jak lze řešit na úrovni BasePresenteru (třeba zkopírováním formatXyz metod do něj)
Nová vs. stará adresářová struktura: to je součást hlubší koncepce a tento první krok nemusí vypadat úplně pochopitelně. Nicméně struktura je tvárná a skutečně řešíme pouze výchozí podobu, není třeba mít obavy z přepsání metod formatXyz jak to dělá OldPresenter.