Jmenné prostory – Last Call Announcement

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8218
+
0
-

Tohle by předpokládalo vznik konvence, že u těchto tříd by se používal poslední díl NS (příjemná konvence, zjednodušuje use) nebo alternativně use Abc\Xyz as XyzAbc;

Nakonec i v Javě se obdoby najdou (např nebo), hlavně při větším zanoření balíčku. Což je i případ nejzanořenějšího Responses.

redhead napsal(a):

@Jan Tvrdík: vždyť ani to Responses\ nemusíš psát, proč taky? Stačí FileResponse s usem.

Honza říká něco jiného, že to napíše s code completition rychleji, což je obecně fakt.

redhead
Člen | 1313
+
0
-

David Grudl napsal(a):

Nakonec i v Javě se obdoby najdou (např nebo), hlavně při větším zanoření balíčku. Což je i případ nejzanořenějšího Responses.

Linky jsou stejné. Zajímal by mě i ten druhý, prosím oprav.

Špatně: Parser je to co ta třída dělá – parsuje, do pckg odebrali právě tu specializaci, ale ne to co dělá. Porovnej:

Text/Html/Parser
Parsers/Text/Html

Editoval redhead (11. 4. 2011 22:19)

David Grudl
Nette Core | 8218
+
0
-

Už nevím co tam bylo, našel jsem další a doplnil. BTW co je špatně?

redhead
Člen | 1313
+
0
-

Fakt nevidíš rozdíl mezi těma dvěma?

Tak jinak.

Latte/Interpret
Latte/Parser
Latte/Macros
---- vs -----
Interprets/Latte
Parsers/Latte
Macros/Latte

Jenom příklad. Druhý je analogický k současnému návrhu s Responses.

Odděluješ totiž logiku blbě. Specializaci tříd máš jako poslední úroveň a obecnost tříd jako první. Když to obrátíš dává to větší smysl (přesně to, co je na prvním linku).

Analogicky k prvnímu by byli Response třídy ve vlastních NS:

Responses\File\Response
Responses\Text\Response

Opět příklad. Tohle po tobě fakt nechci. V tom prvním linku to udělali proto, že měli třídy, které souvisí s jedním typem parseru. U Response tříd by tohle nemělo smysl, protože žádné „pomocné“ třídy nemají.

Abych to shrnul, třídy mají mít v sobě takový název, aby si věděl co dělají (Parser – parsuje, Response – odpovídá), když to obrátíš (File – soubor? snad jo, Text – nějaký dlouhý string?).

Na závěr snad už velice výstižně, kdybys chtěl zrušit duplicity:

GrepSeedJuiceManager	- bez NS
GrepSeedJuice\Manager	- správně
Managers\GrepSeedJuice	- špatně (současné Response)

Editoval redhead (11. 4. 2011 22:57)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Podle mě je rozdíl prostě v tom, že někomu se nechce dokola psát to Managers (respektive Responses, whatewer), a v tom je ta přidána hodnota – pokud nechci, nemusím, použiji use. A pokud by to byl mišmaš, usenu pouze Responses a v kódu tuto klíčovou část názvu použiji. Název třídy musí být v souboru stejně unikátní, takže pokud mi název File není jasný, mrknu na začátek souboru a přečtu si kompletní název.

EDIT:
Eh, unikly příspěvky na 3. stránce – reagoval jsem na redhead. Takže jen maličké doplnění, a že příklad s NS GrepSeedJuice v předchozím příspěvku není přesný. První dva řádky berou třídu Manager jako unikátní typ, zatímco 3. řádek ji bere jako jednu z mnoha typů Managerů, takže to nejde srovnat, nebo ne?

Úplně na závěr: vzhledem k autocomplete to asi skutečně není dramatické, jestli to bude nakonec tak či onak, ale přesto mi pro Responses\File (nebo podle mě nejlépe Response\File) hrají 2 hlavní výhody, a to jednak flexibilita ručního zápisu (můžu delší i kratší verzi dle libosti), druhak důstojné vyrovnání se sdružujícími namespace vs. opakování stejného slova.

Editoval vojtech.dobes (11. 4. 2011 23:17)

arron
Člen | 464
+
0
-

jtousek napsal(a):

if($neco implements IResponse) nedává smysl. Ten objekt přece nic neimplementuje, to ta třída. To bys rovnou mohl místo instanceof zavést extends. Vydíš ten nesmysl?

Je to dost off-topic, ale fakt me to neda…nechci az zase tak moc protestovat proti instanceof, ackoliv ho taky nepokladam za uplne vhodne zvolene ve vztahu k interface, nicmene je objekt (trida) rozhrani opravdu implementuje.

Filip Procházka
Moderator | 4668
+
0
-

redhead napsal(a):

GrepSeedJuiceManager	- bez NS
GrepSeedJuice\Manager	- správně
Managers\GrepSeedJuice	- špatně (současné Response)

Můžu se zeptat jakože je to druhé správně? Přijde mi, že to odporuje pravidlu a),

GrepSeedJuiceManager
GrepSeedJuice\JuiceManager

já bych třídy pojmenoval takhle, a vůbec by mi nevadilo, že je tam duplikace jednoho slova, protože když si takhle usenu více managerů, tak pořád budu vědět se kterým pracuju, pořád bude mít kus názvu v namespace a navíc je to přiměřeně popisné.

Samozřejmě, když budu mít více ovocných džusíků, tak si moc nepomůžu, tohle asi není úplně ideální případ, ale vždy se dá najít jedno slovo, které nepřekáží, ale zkonkretizuje co hledám. Třeba takový GrepSeedJuice\GrepJuices mi příjde jako popisný název pro manager, který reprezentuje, že je to z grepu (nemám duplikace džusíků v ostatním ovocem) a že je to džus (nemám duplikace s ostatního ovoce v džusech).

Když bych používal konvenci Namespace\TypTřídy (GrepSeedJuice\Manager) a chtěl po našeptávači napovědět use nebo doplnit namespace na řádek, tak na mě vzvrací 50 managerů a to už je rychlejší si vzpomenout, v jakém to bylo namespace, než se pročítat tím našeptávačem.

Honza Marek
Člen | 1664
+
0
-

Přečetl jsem si (konečně) pozorně rozpis změněných tříd.

MultiRouter → Nette\Application\Routers\Multiplier

A tohle mi vcelku pobavilo. Co dělá násobitel/násobič v routách? :) Co třeba RouteCollection?

Jinak se mi to až na iterátory a AppForm vcelku líbí. Nicméně jelikož třídu iterátoru z Nette jsem jaktěživ neinstancoval, tak mi to nevadí.

Milo
Nette Core | 1283
+
0
-

A nechcete pro nějakou skupinu tříd zavést prefix v názvu, jako se používá u rozhraní písmeno I? Např pro responses:

Response/RFile
Response/RJson

Namespace vídám jen z dálky, tak mě nekamenujte ;)

Filip Procházka
Moderator | 4668
+
0
-

Prefixy jsou hnusne, je to prasarna. A vubec, zkratky jsou zlo.

Tharos
Člen | 1030
+
0
-

HosipLan napsal(a):

A vubec, zkratky jsou zlo.

Takže zavést Responses\JavaScriptObjectNotation a třeba Nette\HyperTextMarkupLanguage :)?

Milo
Nette Core | 1283
+
0
-

Ale zase když někde uvidíš RFile, RJson řekneš si „Ha, reponse“ (což si ostatně řekneš i u FileResponse a pod, tohle je jen kraší). Vím že tudy univerzální cesta nevede, byl to jen nápad.

Editoval Milo (12. 4. 2011 10:38)

Filip Procházka
Moderator | 4668
+
0
-

Zase tak bych to až nehrotil. Jenom je potřeba rozlišovat mezi

$i = new u()
$i->n = 'pepa';
echo $i->f();

a

$user = new User();
$user->name = "pepa";
echo $user->getFullname();

Chvilku jsem v nějakém záchvatu nechutě psát dlouhé názvy takhle programoval a jenom málo věci znepřehlední kód více než zkratky.

Nejvíc mě potrápilo když jsem dostal nastarosti importovat data z cizí databáze, měla sloupce pojmenované zkratkami, prvními písmeny slov. Ty názvy byly německy ⇒ německé zkratky. No hrůza a děs. Nesnáším zkratky.

Petr Motejlek
Člen | 293
+
0
-

Ta idea toho škatulkování je docela zajímavá. Osobně si myslím, že je nakonec úplně jedno, jestli se použije \Nette\Responses\Text, nebo \Nette\Responses\TextResponse, protože funkcionalita jedné varianty se dá docílit i tou druhou (s menšími či většími úpravami v kódu).

Když bych dneska někde používal TextResponse, tak jsem bych ho použil tak, jak jsem ho teď napsal. Tzn., že bych si na začátku souboru udělal use \Nette\Responses\TextResponse a to by mi stačilo, protože se mi určitě nestane, že budu mít někde během práce ještě potřebu používat nějakou jinou třídu, která by se jmenovala taky TextResponse…

Když se ale ta třída jmenovala jen Text, tak bych si s tím stejně poradil. Udělal bych si use, kde bych neměl jen přímo tu třídu, ale třeba poslední část namespace (Responses). Pak bych v kódu prostě místo TextResponse psal Responses\Text. Je to samozřejmě o dva znaky delší, než kdybych psal jen TextResponse, ale funkčně je to úplně stejné. Kdyby mi to i přesto nevyhovovalo, tak můžu použít use \Nette\Responses\Text as TextResponse a jsem tam, kde jsem byl předtím.

Za mě určitě hlas pro variantu, kdy je každá část namespace co nejkratší a ať se nic zbytečně neopakuje.

Petr Motejlek
Člen | 293
+
0
-

HosipLan napsal(a):

JJ, zkratky jsou super hnus na místech, kde nemám možnost hned vidět, co se pod nimi skrývá. Taky jsem viděl několik databází, kde byly tabulky pojmenované PRCAL, BAZ, ZAK, DOLIVY, atp. ;)

redhead
Člen | 1313
+
0
-

Můžu se zeptat jakože je to druhé správně? Přijde mi, že to odporuje pravidlu a),

GrepSeedJuiceManager
GrepSeedJuice\JuiceManager

Neodporuje, je to podst. jméno a vím, že něco menežuje, protože hned vidíš Manager. Když ale narazím v kódu na třídu File bez NS, tak vůbec netuším, že jde o Response. A jsme zase u toho.

File u spojení FileResponse 1) není podstatné jméno, ale přídavné, 2) bez NS nepoznáš, účel třídy (File je u mě nějaká abstrakce souboru), takže odporuje celému pravidlu a).

srigi
Nette Blogger | 558
+
0
-

Nemam moc chut vstupovat do diskusie, lebo NS povazujem za delikatnu zalezitost, ktoru rad prenecham zodpovednejsim. Ale niekde v uvode zaznelo, „aby sa s tym dobre robilo programatorom“ (alebo nieco podobne).

Za seba preto napisem iba jedno:

\Nette\Responses\Text vs. \Nette\Responses\TextResponse

Mne ako koncakovy by najviac vyhovovalo \Nette\Response\TextResponse (samozrejme konvencia napriec FW). Nejake zdvojovanie v ceste mam na haku.

HOWG.

Editoval srigi (12. 4. 2011 11:29)

xificurk
Člen | 121
+
0
-

Pořád mi není moc jasná ta potřeba některých lidí, aby jméno třídy bez namespace byla přesným popisem. Pokud třída má mít popisný název i bez namespace, tak jednoduchým řešením je prostě namespace nepoužívat a narvat ho celý do názvu třídy :-) a to se asi shodnem, že není úplně nejlepší přístup.

Objevil se tu argument čitelnosti a srozumitelnost kódu, ale když porovnám obě varianty zápisu:

<?php
use Nette\Application\Presenter,
    Nette\Application\Responses\RedirectResponse,
    Nette\Application\Responses\ForwardResponse,
    Nette\Application\Responses\JsonResponse;

class FooPresenter extends Presenter
{
    public function actionBar()
    {
        if (...) $this->terminate(new RedirectResponse(...));
        if (...) $this->terminate(new ForwardResponse(...));
        if (...) $this->terminate(new JsonResponse(...));
    }
}
?>
<?php
use Nette\Application\Presenter,
    Nette\Application\Responses;

class FooPresenter extends Presenter
{
    public function actionBar()
    {
        if (...) $this->terminate(new Responses\Redirect(...));
        if (...) $this->terminate(new Responses\Forward(...));
        if (...) $this->terminate(new Responses\Json(...));
    }
}
?>

Tak rozhodně nelze říct, že by jedna varianta byla objektivně výrazně lepší než druhá. Mně se subjektivně víc zamlouvá ta druhá; ještě bych tam použil jednotné číslo Response (podobně jako mám ve zvyku u tabulek v databázi), ale to už je celkem maličkost.

xificurk
Člen | 121
+
0
-

Na současném návrhu se mi nelíbí:

  • Nette\Application\Routers\Multiplier – Multiplier je fakt moc wtf.
  • Nette\Application\Routers má zavádějící název, protože tam nejsou jen routery ale i např. Route. Možná by se hodilo to změnit na Nette\Application\Routing. (A jsem trošku na vážkách jestli tam potom nehodit i ten RoutingDebugger.)
  • AppForm – o tom už toho bylo napsáno dost
David Grudl
Nette Core | 8218
+
0
-

srigi napsal(a):

Mne ako koncakovy by najviac vyhovovalo \Nette\Response\TextResponse

Konečně pořádný argument!

redhead napsal(a):

V tom prvním linku to udělali proto, že měli třídy, které souvisí s jedním typem parseru.

Ty linky jsem spíš uváděl jako odpověď na to, že vidíš new File a nevíš, že to je odpověď. Totéž platí pro new Array u Javy. Ale nechtěl bych se dál posouvat cestou poukazování na nějaké drobné vady v tom či onon jazyce.

Rozdílu mezi specializací a obecností rozumím, nicméně jsou situace, kdy lze obojí spojit do jednoho slova a o to jsem se pokoušel (MappingIterator → Mapper, Filter, ButtonControl → Button, …), alternativně i konvencí (Response\File). Cílem je řešit konkrétní existující problém, který se týká i Javy (nebo alespoň její dokumentace), takže nelze to všechno šmahem smést ze stolu.

xificurk napsal(a):

  • Nette\Application\Routers má zavádějící název, protože tam nejsou jen routery ale i např. Route.

Což je také router. IRouter.

redhead
Člen | 1313
+
0
-

David Grudl napsal(a):

Totéž platí pro new Array u Javy.

new Array je hloupost, Array je statická třída, která poskytuje nějaké užitečné metody pro práci s poli. V Javě hlavně není něco jako array() jako v PHP, ale pole se definuje např. jako int[]. Ale nechme Javy.

Rozdílu mezi specializací a obecností rozumím, nicméně jsou situace, kdy lze obojí spojit do jednoho slova a o to jsem se pokoušel (MappingIterator → Mapper, Filter, ButtonControl → Button, …), alternativně i konvencí (Response\File). Cílem je řešit konkrétní existující problém, který se týká i Javy (nebo alespoň její dokumentace), takže nelze to všechno šmahem smést ze stolu.

Je ale nezbytně nutné skládat dvě slova do jednoho? FileResponseFile je prostě hloupost. Co se týká Mapperu a Filteru, tam to není tak markantní, ale také to není nejlepší, nevím, že jde o iterátor.

Zavést tuto konvenci je sice hezké, ale k čemu, když pak stejně budete psát Response\File namísto FileResponse.

Já ale s dokumentaci problém nemám, mám problém se špatnými názvy tříd, které jako programátor budu používat (mnohem častěji než číst dokumentaci).

Editoval redhead (12. 4. 2011 14:46)

Petr Motejlek
Člen | 293
+
0
-

Je také dobré si uvědomit, že když se půjde směrem Responses\File místo FileResponse, tak bude taky potřeba předělat i Presentery. Dneska je pořád potřeba, aby měly suffix Presenter.

Filip Procházka
Moderator | 4668
+
0
-

Což si můžeš změnit pomocí Nette\Application\IPresenterFactory.

Petr Motejlek
Člen | 293
+
0
-

HosipLan napsal(a):

Což si můžeš změnit pomocí Nette\Application\IPresenterFactory.

Což jsem si už dávno udělal, protože se mi verze bez suffixů líbí víc… Chtěl jsem jen ostatní diskutující upozornit na to, že tu řešíme případy typu TextResponse vs Responses\Text a na Presenters\My vs MyPresenter se zapomíná a přitom už ve FW je dávno vyžadováno to suffixování. Jen jsem chtěl, aby to tu zaznělo.

P. S.: Pokud bude mít někdo zájem o tu implementaci IPresenterFactory, která pracuje s těmy namespacy, můžu ji někam bokem postnout.

jtousek
Člen | 951
+
0
-

David Grudl napsal(a):

srigi napsal(a):

Mne ako koncakovy by najviac vyhovovalo \Nette\Response\TextResponse

Konečně pořádný argument!

Souhlasím, ale pokud \Nette\Response\TextResponse tak i \Nette\Response\FileResponse – tzn. nemíchat to!

bojovyletoun
Člen | 667
+
0
-
  • Souhlasím se Šamanem a jedním namespacem Nette. (vážně!)
  • Podle mě je smysl namespace vidět na příkladu FormContainer. Má metody addTextarea, addRadioList. -Špatně by bylo na začátku vypisovat use ..\..\Textarea;use ..\..\RadioList. Takže namespace by měly při používání nějakého balíku ušetřit práci psát absolutní cestu ..\..\ a stačí psát jen relativní cestu.
  • Pak tu byl argument new Manager – v tu chvíli v ide vyskočí 10 managerů
  • Konečně Latte\Parser vs Parsers\Latte. Tím se nezbavíme předchozího bodu, ale je zřejmé, že správné je mít Latte pohromadě a ne ho mít roztoušené v Parsers,Lexers.

Dovolím si návrh na to jak vyřešit tento problém. Jak byste všechny ty třídy zapsali, kdyby namespace neexistovaly?

David Grudl
Nette Core | 8218
+
0
-

Uzavřel bych to.

Level-up namespaces (třídy Nette\Component a Nette\Component\Container nebo Nette\Cache a Nette\Cache\FileStorage) mají své kouzlo, rozbíjí pohled na namespaces jakožto balíčky, čímž řeší některé problémy, ale zároveň jiné vytvářejí. Protože si neumím představit, jak bych vytvářel API dokumentaci a vysvětloval dvojjakost třída-namespace, používat je nebudu.

Balíčkové odstranění duplicit (třídy Nette\Http\Request, Nette\Latte\Filter apod.) je cool, lze je dobře kombinovat s parciálním namespace (use Nette\Http + new Http\Request) a neporušují názvosloví tříd, používat je budu.

Sdružující namespaces (např. Responses, Routers, Storages, …) zjednodušují orientaci v API dokumentaci (bez nutnosti zavádět speciální anotace) a také zjednodušují psaní kódu v editoru s code complete, proto je používat budu (výjimkou jsou výjimky). Pro pojmenování se mi o něco přirozenější jeví množné číslo.

Sdružující odstranění duplicit (např. Responses\File, Storages\File) je bez zavedení speciálních konvencí nesrozumitelné, proto je používat nebudu. Pochopitelně třídy s plnohodnotným názvem nebudou mít koncovku (RouteRouter, ButtonControl, MapperIterator).

Petr Motejlek
Člen | 293
+
0
-

@David Grudl: Líbí se mi to. Jen zamáčknu slzu za Responses\File a Cache\Storages\File. Přijde mi hezčí dostat opkaující se věci do namespace, než do názvu třídy, ale (asi se budu opakovat) nakonec je jedno, jak to bude, protože jde jen o to si zvyknout.

Hlavně, aby se ta stejná konvence dodržovala všude, aby i někdo, kdo třeba prvně začne programovat a vezme si na pomoc Nette, tak ať je rovnou veden ke standardizaci ;).

Jan Tvrdík
Nette guru | 2595
+
0
-

Teď už chybí jen přejmenovat AppForm na Form a Debug na Debugger (lépe vyjadřuje podstatu).

U přejmenování AppForm je hlavní a pokud vím jediný problém v tom, že začátečníci budou mít tendenci vytvářet instance Nette\Forms\Form. Napadá někoho, co s tím?

Editoval Jan Tvrdík (12. 4. 2011 21:01)

redhead
Člen | 1313
+
0
-

Uzavřel jsi to hezky. S tímhle jsem nanejvýš spokojen.

FYI: Dialog. okno „Máte rozepsaný příspěvek ..“ se mi zobrazí i při pokusu o odeslání příspěvku tlačítkem Poslat :)

Editoval redhead (12. 4. 2011 20:26)

Jan Tvrdík
Nette guru | 2595
+
0
-

Ještě přemýšlím nad vytvořením pevného aliasu Nette\Debug / Nette\Debugger pro Nette\Diagnostics\Debugger. Co si o tom myslíte? Psát Nette\Diagnostics\Debugger::barDump(...) je šílenost. Řešit to lze také povinným uvedením use Nette\Diagnostics\Debugger do každého souboru nebo vytvořením globálních funkcí dump a barDump (resp. d a bd), což mi připadá asi jako nejlepší varianta.

Jak hodláte dumpovat vy?

jtousek
Člen | 951
+
0
-

dump přece existuje. Jsem rozhodně spíš pro vytvoření globální fce než aliasu, ten to zas o tolik nezkrátí.

S Davidovým rozhodnutím jsem rovněž spokojen. :-)

Jan Tvrdík napsal(a):

Teď už chybí jen přejmenovat AppForm na Form a Debug na Debugger (lépe vyjadřuje podstatu).

Přesně tak. Doufám, že se tyto dvě změny do finální verze dostanou.

Editoval jtousek (12. 4. 2011 20:34)

David Grudl
Nette Core | 8218
+
0
-

redhead napsal(a):

Uzavřel jsi to hezky. S tímhle jsem nanejvýš spokojen.

Díky za oponenturu.

FYI: Dialog. okno „Máte rozepsaný příspěvek ..“ se mi zobrazí i při pokusu o odeslání příspěvku tlačítkem Poslat :)

V jakém browseru?

redhead
Člen | 1313
+
0
-

V jakém browseru?

Chrome(Plus)

Filip Procházka
Moderator | 4668
+
0
-

Honzo, já to řeším právě těmi zkratkami d() a bd(), plus teď nově i wc() https://gist.github.com/915330, což mi začalo připadat vtipné až teď :D

jtousek
Člen | 951
+
0
-

jj taky používám podobný zkratky. Např. fci ml(), která mi pošle e-mail s hlášením. Hodí se mi v situaci kdy vím, že by něco nastat i když by teoreticky mohlo a není to taková chyba na vyhození výjimky. Potom si na mejlu zkontroluju co se stalo a jestli je vše ok a časem to odstraním.

David Grudl
Nette Core | 8218
+
0
-
redhead
Člen | 1313
+
0
-

DevNullStorage jako vážně? :D Vtipné.

David Grudl
Nette Core | 8218
+
0
-

To je nápad Kravča, super.

Třídy z prostoru Nette umístím nejspíš do adresáře common (s malým písmenkem).

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Jen maličkost: Nette\Application\Routers\Namespace není přípustné, ne? U MultiRouteru.

David Grudl
Nette Core | 8218
+
0
-

Fixed

Patrik Votoček
Člen | 2221
+
0
-

Jan Tvrdík napsal(a):

Jak hodláte dumpovat vy?

už hodně dlouho používám globální barDump (dump je přímo v Nette)

Koukám po pár dnech jak se to tu posunulo a s výsledkem nelze než souhlasit. Teď už jen aby se to objevilo v repu

Už to v repu je ale ne v nightly-build balíku v sekci download :-)

Nox
Člen | 378
+
0
-

@DavidGrudl právě kvůli Balíčkové odstranění duplicit se mi u Sdružující namespace víc pozdává jednotné – třeba new Response\File, jakože to prostě víc popisuje ten 1 používaný objekt. Samozřejmě je to na tobě, jen můj (a možná třeba ne úplně správný) pohled

pekelnik
Člen | 462
+
0
-

Nevim jestli nejdu s křížkem po funuse, ale celkem se mi líbilo Controls místo UI

<?php
Nette\Application\Control\Form
Nette\Application\Control\Button
?>
Jan Tvrdík
Nette guru | 2595
+
0
-

Jdeš pozdě a navíc jsi napsal vícenásobnou blbost.

juzna.cz
Člen | 248
+
0
-

U commitu je odkaz na https://doc.nette.org/updating-2-0, coz ale neexistuje. Je uz dokumentace k prechodu sepsana na jine url, nebo se na tom teprve pracuje?

Programatori si ted mohou dat pohov a ke slovu se dostavaji dokumentatori – upravit veskerou existujici dokumentaci na nove namespaces :) To bude jeste sranda.

David Grudl
Nette Core | 8218
+
0
-

Stránka zatím není. Dokumentaci jsem ti zatím neposílal, protože to vázlo právě na namespaces.

Patrik Votoček
Člen | 2221
+
0
-

Začal jsem převod a tak sem budu psát na co narazím…

  • proč není Nette\Application\IRouter v Nette\Application\Routers ?
  • proč není Nette\Forms\IControl v Nette\Forms\Controls ?
  • nebylo by lepší kdyby User a IUser byly v Nette\Security ?

EDIT: pro rejpaly proč jsem to neřešil před pushnutím: protože mám raději praktickou zkušenost než jen teorii.

paranoiq
Člen | 392
+
0
-

imo

  1. protože IRouter není router
  2. protože IControl není control
  3. to že na webu jsou uživatelé ještě nutně neznamená, že jsou nějak omezováni a kontrolováni. proč tedy hned „security“?
Patrik Votoček
Člen | 2221
+
0
-

1 + 2 ok beru ale 3 protoze: „User authentication and authorization.“ případně udělat ze Security ACL.