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 | 8227
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
loginForm
aLoginForm
. 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
loginForm
aLoginForm
. 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 | 8227
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 | 8227
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
NazevKompoenty
by 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 | 8227
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 ;).