Control::invalidateControls()

- Majkl578
- Moderator | 1364
Navrhuji přidání metody invalidateControls do třídy Control. Řešila by invalidaci několika položek najednou.
Mnou navrhovaná implementace: https://gist.github.com/…27f69607dc6a.
Autorem myšlenky je MelkorNemesis.
Editoval Majkl578 (23. 3. 2010 23:55)

- Honza Marek
- Člen | 1664
Něco takovýho by nebylo špatný mít ve frameworku. Akorát název invalidateControls je docela nešťastný, když to slouží k invalidaci více snippetů v jednom controlu. Takže asi invalidateSnippets. K diskuzi bych dal i založení metody invalidateSnippet, protože invalidateControl($snippet) může být podle mě pro začátečníka matoucí.
Editoval Honza Marek (24. 3. 2010 11:08)

- pekelnik
- Člen | 462
Honza Marek napsal(a):
… název invalidateControls je docela nešťastný, když to slouží k invalidaci více snippetů v jednom controlu. Takže asi invalidateSnippets. K diskuzi bych dal i založení metody invalidateSnippet, protože invalidateControl($snippet) může být podle mě pro začátečníka matoucí.
Domnívám se, že nejenom pro začátečníka. Odkdy je snippet control?

- Majkl578
- Moderator | 1364
pekelnik napsal(a):
Domnívám se, že nejenom pro začátečníka. Odkdy je snippet control?
Souhlasím, také mi to přijde dost WTF.
Jedna otázka do pranice:
Jak se zachová aplikace, kde budu v šabloně mít komponentu „foo“ a
zároveň snippet pojmenovaný „foo“ a použiji
$this->invalidateControl('foo')?

- Honza Marek
- Člen | 1664
pekelnik napsal(a):
Domnívám se, že nejenom pro začátečníka. Odkdy je snippet control?
Pokročilý si prostě zvykne.
Majkl578 napsal(a):
Jak se zachová aplikace, kde budu v šabloně mít komponentu „foo“ a zároveň snippet pojmenovaný „foo“ a použiji$this->invalidateControl('foo')?
Tak… invaliduje to snippet, což je samozřejmě v rozporu s tím, jak ten kód vypadá.

- Majkl578
- Moderator | 1364
Upravil jsem ještě ten gist.
Celá současná implementace je podle mě nevhodná. Proč?
– Invalidovat více snippetů metodou invalidateControl() mi
přijde nelogické – k tomu invalidateControls().
– Invalidovat snippet pomocí invalidateControl() je
podivné – takže invalidateSnippet() (jak navrhl Honza).
Navrhl bych tedy k diskuzi nové (a asi i zpětně nekompatibilní) rozhraní pro implementaci:
– invalidateControl()/invalidateSnippet()
(invalidace komponenty respektive snippetu)
– invalidateControls()/invalidateSnippets()
(invalidace více komponent respektive snippetů)
– isControlInvalid()/isSnippetInvalid() (kontrola
validity komponenty respektive snippetu)
– areControlsInvalid()/areSnippetsInvalid()
(kontrola validity více komponent respektive snippetů)
– validateControl()/validateSnippet() (zvalidovat
komponentu respektive snippet)
– validateControls()/validateSnippets()
(zvalidovat více komponent respektive snippetů)
Co vy na to?
Editoval Majkl578 (25. 3. 2010 22:07)

- Honza Marek
- Člen | 1664
Majkl: Naprosto ten seznam nechápu… proč tam máš vždycky dvě možnosti, když snippet a control je něco úplně jiného?
IMHO metoda invalidateControl, která zneplatní všechny snippety v controlu, je naprosto v pořádku. IsControlInvalid, pokud kontroluje platnost celé komponenty, tak taky. Metody areControlsInvalid()/areSnippetsInvalid() vůbec nerozumim k čemu jsou dobrý.
Jako další námět k diskuzi by se dalo vzít taky slovo invalidate, když je tak divný :-D