case-insensitive názov komponenty

- timbulko
- Člen | 85
Zdravím,
myslím, že ide o bug v novom vytváraní komponent. Volanie getComponent
síce funguje bez ohľadu na veľkosti písmen, no vždy pri volaní s inými
veľkosťami písmen vytvorí tú istú komponentu znova. Môže sa tak stať,
že jedna komponenta sa vytvorí viac krát (čo sa mi dnes stalo a asi pol
hodinu som hľadal chybu :-)).
// toto vytvorí tú istú komponentu tri krát
$this->getComponent("loginForm");
$this->getComponent("LoginForm");
$this->getComponent("loginform");

- David Grudl
- Nette Core | 8285
Buď lze udělat ověření metody v Control::createComponent()
case-sensitive, nicméně stále by nebyl rozdíl mezi loginForm a
LoginForm. Leda, že by akceptoval pouze první variantu.
Nebo udělat názvy komponent v celém Nette case-insensitive. Což by mohlo způsobit BC break.
Nechávám to k diskusi.

- washo
- Člen | 88
David Grudl napsal(a):
Buď lze udělat ověření metody v Control::createComponent() case-sensitive, nicméně stále by nebyl rozdíl mezi
loginFormaLoginForm. Leda, že by akceptoval pouze první variantu.Nebo udělat názvy komponent v celém Nette case-insensitive. Což by mohlo způsobit BC break.
Nechávám to k diskusi.
Ja myslel ze jsou case sensitive? Proc by nemely byt?

- romansklenar
- Člen | 655
Jejda raději to nechat tak jak to je :D …už vidím ty dotazy lidí co nečtou changelog

- Ondřej Mirtes
- Člen | 1536
washo napsal(a):
David Grudl napsal(a):
Buď lze udělat ověření metody v Control::createComponent() case-sensitive, nicméně stále by nebyl rozdíl mezi
loginFormaLoginForm. Leda, že by akceptoval pouze první variantu.Nebo udělat názvy komponent v celém Nette case-insensitive. Což by mohlo způsobit BC break.
Nechávám to k diskusi.
Ja myslel ze jsou case sensitive? Proc by nemely byt?
Funkce/mMetody v PHP jsou case-insensitive, můžeš psát
Header(), Str_Repeat(), apod.

- Honza Marek
- Člen | 1664
David Grudl napsal(a):
Nebo udělat názvy komponent v celém Nette case-insensitive. Což by mohlo způsobit BC break.
Zas kdo vyrábí loginForm a LoginForm a myslí tím něco jiného? Abych se přiznal, tak jsem myslel, že to je case insensitive. Odteď tedy na to budu dávat větší pozor.

- David Grudl
- Nette Core | 8285
Jde o to, že je to sice je case-sensitive, tedy
$presenter['loginForm'] a $presenter['LoginForm'] je
něco jiného, ale pokaždé to (zatím) zavolá stejnou továrničku, takže
případná chyba se špatně odhaluje. V tom je problém.

- romansklenar
- Člen | 655
Aha, tak v tom případě beru zpět a asi by měla být i továrnička case-sensitive ať je to jednotné.

- Petr Motejlek
- Člen | 293
Myslím, že by to mělo být case-sensitive na všechno kromě prvního písmena (díky názvu továrničky createComponentNazevKomponenty (tohle MUSÍ být spuštěno jak pro nazevKomponenty, tak pro NazevKompoenty, ale NESMÍ být spuštěno pro nazevkomponenty).

- David Grudl
- Nette Core | 8285
Jenže to není dokonalé řešení – stále je tu problém s prvním
písmenkem. Takže by se muselo zakázat první velké písmeno, přesněji
řečeno NazevKompoenty by nevolal továrničku.

- Petr Motejlek
- Člen | 293
David Grudl napsal(a):
Jenže to není dokonalé řešení – stále je tu problém s prvním písmenkem. Takže by se muselo zakázat první velké písmeno, přesněji řečeno
NazevKompoentyby nevolal továrničku.
Tím jsem měl na mysli udělat to tak, aby např. se interně volání $this[‚nazevKomponenty‘] a $this[‚NazevKomponenty‘] vždy převedlo na $this[‚NazevKomponenty‘] (případně s malým písmenem n na začátku) – to v offsetGet($index) udělat můžeš. Pak by se vždycky zavolala stejná továrnička aj to pole by vracelo správnou hodnotu pro oba indexy.
Nebo poslední a hnusná možnost – vyjímka při použití prvního velkého písmena v názvu komponenty ;) – stejně si myslím, že best practice je použití prvního malého písmena, to velké až moc připomíná Packal ;).

- David Grudl
- Nette Core | 8285
Od rev. 449 se továrnička volá case-sensitive, první písmenko musí být malé.

- Petr Motejlek
- Člen | 293
David Grudl napsal(a):
Od rev. 449 se továrnička volá case-sensitive, první písmenko musí být malé.
Asi jsem se zamiloval ;). Super.

- PetrP
- Člen | 587
David Grudl napsal(a):
Od rev. 449 se továrnička volá case-sensitive, první písmenko musí být malé.
Nevím no, skutečně při $presenter['loginForm'] a
$presenter['loginform'] myslím 2 různé komponenty? Měla by
vůbec nastat situace kdy bych 2 různé komponenty rozlišoval jen velikosti
písmen?

- Cifro
- Člen | 245
David Grudl napsal(a):
Od rev. 449 se továrnička volá case-sensitive, první písmenko musí být malé.
Pôvodne som mal createComponentSlider a
{control Slider}, podľa toho som zmenil na
createComponentslider a {control slider}, vypísalo
že komponenta neexistuje.
Takže správne pri jednoslovných názvoch musí, byť
createComponentNazov a {control nazov} a
$presenter['nazov'].
To pre ostatných.
Inak pekný chaos s týmto vznikol, chvíľu som sa šprtal kým som prišiel na to, že kde čo treba veľkým alebo malým.
Editoval Cifro (22. 7. 2009 10:23)

- Petr Motejlek
- Člen | 293
PetrP napsal(a):
David Grudl napsal(a):
Od rev. 449 se továrnička volá case-sensitive, první písmenko musí být malé.
Nevím no, skutečně při
$presenter['loginForm']a$presenter['loginform']myslím 2 různé komponenty? Měla by vůbec nastat situace kdy bych 2 různé komponenty rozlišoval jen velikosti písmen?
Asi nenastane, ale právě pro to by jsi hned od začátku měl být case-sensitive ;).