Adresarova struktura Feature-Re-Request (#2)
- wdolek
- Člen | 331
Dovolil bych si znovu otevrit pozadavek, viz tento thread.
Co mne k tomu privedlo? Ladenka na me vyklopila snusku erroru, jal jsem se patrat ve zdrojacich.
inner-code Nette\Configurator:: createServiceTemplateCacheStorage
Inu, reknu si – vsak to je jasne – vlezu do lib\Nette\
a
hledam tridu Configurator
(v AppExplorer
v mem
IDE)… no a samozrejme nevidim, protoze je tato trida zasita v podslozce
common
.
Ze se o nacitani trid nemusim starat, ze vse resi loader.php
je
mozna hezke, na druhou stranu to moc nepomaha pri podobnych letmych vyletech do
zdrojaku Nette. Jiste, mohu si to najit v TotalCommanderu, nebo parkrat
kliknout / zmacknout klavesovou zkratku v IDE a zadat retezec, ktery chci najit
v souborech – proc to ale delat takhle, kdyz by to mohlo mit v zakladu
logicke usporadani, kde adresarova struktura odpovida pojmenovani tridy.
- wdolek
- Člen | 331
:D Tak se tu prave poprel prizpevek od Patrika a od arrona. Pestrost vs uniformita – musim tedy pouzivat NetBeans, abych se ve zdrojacich Nette neztratil? Samozrejme i v Eclipse/Aptana obcas nejake proklikavani funguje, popripade si mohu otevrit dialog „Open Type“. Ale znate to, obcas potrebujete neco honem – rychle, nechcete otevirat IDE, ktere Vam s tim pomuze… Navic tu mame desitky ruznych IDE, kazde se chova jinak, nekdo programuje v PSPadu…
Paklize je ale filosofii Nette magie a neprehlednost, a to cele je vydavano za velke plus, tak budiz. :) Jen zkousim obnovit diskusi na toto tema – jestli treba obhajci stavajiciho stavu nezmenili casem svuj nazor.
- wdolek
- Člen | 331
pilec napsal(a):
Podle mého je to vcelku logické, co je přímo v namespace Nette je ve složce common aby v rootu byl pouze loader.php a nepletli se začátečníci obrovským množstvím php souborů.
Takze budeme radeji mast „nezacatecniky“? Sounds like a plan! Nemluve
o tom, ze v puvodnim threadu je seznam vsech trid, ktere neodpovidaji svemu
umisteni v adresarove strukture (nevim, jak je na tom stavajici verze Nette,
ale neprekvapilo by mne, kdyby se situace ani trochu nezmenila) – nejde tedy
jen o common
.
(A mel jsem za to, ze „logicke“ veci nepodlehaji subjektivnim dojmum)
Editoval wdolek (15. 11. 2011 11:46)
- Honza Marek
- Člen | 1664
Co má co začátečník koukat na zdrojáky frameworku? Uspořádání PSR-0 je samozřejmě logičtější a o něco málo výhodnější, ale je to celkem detail, takže je tu zjevně prioritou pohodlí hlavního vývojáře. Doporučuju vznést feature request až vznikne ten bájný dokonalý fork nette.
- wdolek
- Člen | 331
Honza Marek napsal(a):
Co má co začátečník koukat na zdrojáky frameworku?
Nejsem si zcela jisty, o co ma presne jit. Copak nekdo, kdo dela webovou aplikaci s Nette, je takovy amater, ze nesnese pohled na par PHP souboru primo v adresari Nette? Nebo ze mu ma byt pohled na soubory upren (o jedno kliknuti na slozku)? Tento argument se mi zda ponekud invalidni…
A paklize opravdu nechceme uzivateli ukazovat „zbytecne“ zdrojaky, dovolil bych si otazku – nebylo by v takovem pripade lepsi udelat z Nette rovnou CMS? ;)
Editoval wdolek (15. 11. 2011 14:46)
- paranoiq
- Člen | 392
wdolku o co ti sakra jde? ted už víš, že některé soubory jsou v adresáři common a příště je tam najdeš. co ještě dalšího potřebuješ ke štěstí? aby všichni slepě následovali tvou víru v PSR0? dej s těmahle malichernostma pokoj
a mimochodem, pojmenování a umísťování souborů je coding standard. za feature to nelze považovat ani omylem. tak nechápu co to dělá v téhle místnosti fóra. založil bych pro to místnost „plané plky“
Editoval paranoiq (15. 11. 2011 15:53)
- nanuqcz
- Člen | 822
paranoiq napsal(a):
wdolku o co ti sakra jde? ted už víš, že některé soubory jsou v adresáři common a příště je tam najdeš. co ještě dalšího potřebuješ ke štěstí? aby všichni slepě následovali tvou víru v PSR0? dej s těmahle malichernostma pokoj
Wdolek chtěl ostatním říct svůj názor na to, jak zase o něco málo zpřehlednit Nette. A podle mě má pravdu. Trochu ale nechápu, co jsi tímhle příspěvkem chtěl říct ty.
- hrach
- Člen | 1838
paranoiq: +1.
Nette není u nás rozšíření kvůli tomu, že by ho David školil, či že by mělo českou dokumentaci, nedej bože kvůli tomu, jak je resistní vůči bc breaks. Ale proto, že právě slepě nedodržuje „standardy“ a snaží se nad každou věcí trochu víc zamyslet.
PSR-0 by způsobilo zabordelení např. root složky, nebo, chcete-li, zbytečně zanoření těchto tříd.
- wdolek
- Člen | 331
paranoiq napsal(a):
ted už víš, že některé soubory jsou v adresáři common a příště je tam najdeš
Nebudu to vedet, nebudu je tam hledat – protoze jsem linej programator a takovehle blbosti, kde ma Nette ulozenou tu ci onu tridu, si skutecne pamatovat nebudu/nehodlam.
aby všichni slepě následovali tvou víru v PSR0?
Jsem rad a velmi pocten, ze „mou“ slepou viru v PSR0 nasleduje vetsina programatoru!
a mimochodem, pojmenování a umísťování souborů je coding standard. za feature to nelze považovat ani omylem.
Zalozme tedy thread „Coding standard request“…
- wdolek
- Člen | 331
hrach napsal(a):
Ale proto, že právě slepě nedodržuje „standardy“ a snaží se nad každou věcí trochu víc zamyslet.
Nette skutecne neni uspesne kvuli nedodrzovani konvence v pojmenovani a umistovani souboru s tridami. Naopak bych vyrkl provokativni nazor, ze si tim Nette spise skodi – novacci (tj. lidi, kteri jiz pouzivali jiny framework) pak mohou byt z takoveho usporadani vykuleni, az se vrhnou zjistovat, co delaji zrovna spatne, nebo jak nejaka komponenta funguje. (A vykulenost urcite nepatri k pocitu, ktery by Nette melo navozovat – prvni dojem je vzdy dulezity!)
PSR-0 by způsobilo zabordelení např. root složky, nebo, chcete-li, zbytečně zanoření těchto tříd.
Pro nekoho, kdo nedela pouze s Nette, naopak zabordeleni zpusobuje absence
podobne konvence ci logiky v ukladani souboru. Ona tam logika samozrejme je,
ale uz je to na bazi nazoru, ze „trida Environment
patri do
common
protoze …“ (zatimco druhy si rekne, ze
„Environment
by melo byt spise v
Application
“).
Ne kazdy vidi Davidovi do hlavy, aby vedel, proc to rozmistil zrovna takto. Proto je pak uzitecne dodrzovat neco, co je zcela bezne – a ne jen kricet, ze ostatni jsou tupci, a ze „my“ to delame nejlepe, protoze jdeme proti proudu. Jit proti proudu musi mit nejaky smysluplny duvod, ktery zrovna v tomto pripade skutecne postradam.
Navic – o co jde? Prejmenovat par souboru / soubory nekam premistit… Je to skutecne takovy problem?
Samozrejme, cele toto me prani o pouzivani PSR-0 je o tom, abych snaze dohledal veci v Nette, kdyz to zrovna potrebuji. Svuj kod si budu psat ciste, a verim, ze malokdo si zacne dobrovolne delat zmatek ve svem vlastnim kodu ;) (i kdyz by mu ten zmatek zprvu pripadal prehledny)
- paranoiq
- Člen | 392
čistý hlavní adresář Nette se souborem loader.php jasně vyjadřuje myšlenku, že k používání Nette není třeba udělat nic jiného než jen includovat loader. a tak to také je. myslím, že to kterýkoliv začátečník ocení mnohem více než to jak jsou uspořádány soubory zdrojáků, ve kterých se začátečníci stejně nemají potřebu přehrabovat (vycházím z předpokladu, že začátečníků, kteří nikdy žádný slušný FW nepoužívali je mnohem více než „začátečníků“ kteří přechází odjinud)
stejně jako dříve u debaty o zpřehlednění jmenných prostorů zde argumentují zkušení vývojáři pohledem začátečníka, nad kterým se ale pořádně nezamysleli
PSR0 není zázračné řešení problémů, ale znouzectnost, kterou jiné knihovny používaly, nebo ještě používají, protože autory lepší řešení nenapadlo. u vlastní knihovny je nejjednodušším a nejspolehlivějším řešením výčet. u cizí pak robot-loader. PSR0 věci zbytečně komplikuje, tím že si za každých okolností vynucuje slepé následování řádu, bez ohledu na to, že ve skutečném světě mohou z ryze pragmatických důvodů existovat výjimky – ať už jako tady uklizení hlavního adresáře nebo třeba sloučení deklarací výjimek či rozhraní…
- Honza Marek
- Člen | 1664
U velkých knihoven typu Zendu, Symfony, Doctrine a podobně RobotLoader věru není dobrým řešením, protože pak člověk přidá třídu v aplikaci a pak po F5 si může jít vařit kafe. #trueStory
- paranoiq
- Člen | 392
Honza Marek napsal(a):
U velkých knihoven typu Zendu, Symfony, Doctrine a podobně RobotLoader věru není dobrým řešením, protože pak člověk přidá třídu v aplikaci a pak po F5 si může jít vařit kafe. #trueStory
asi jsem se špatně vyjádřil. tohle jsou případy kdy je nejlepším řešením právě výčet („vlastní“ knihovna ve smyslu že jsem autorem jak knihovny tak i autoloadingu)
- Nox
- Člen | 378
- Pokud vim při přidání se neinvaliduje celá cache, normálně si přidávám třídy a zpomalení oproti defaultnímu načtení není žádné
- Projekt kde je Doctrine se mi reindexuje na tom pomalejším z PC asi 2.5 sekundy, to se k tomu kafi ani nezdvihnu ze židle. Možná pokud by měl někdo fakt psychoprojekt s 3 celýma frameworkama spojenýma dohromady (??) a několika knihovnama … i tak to proběhne rychleji než kdyby člověk dělal s jazykem, který se kompiluje
(RobotLoader v podstatě ten výčtový loader je)
- Tharos
- Člen | 1030
Nox napsal(a):
- Projekt kde je Doctrine se mi reindexuje na tom pomalejším z PC asi 2.5 sekundy, to se k tomu kafi ani nezdvihnu ze židle. Možná pokud by měl někdo fakt psychoprojekt s 3 celýma frameworkama spojenýma
Každopádně Doctrine snad není zapotřebí nahrávat RobotLoaderem, nebo snad ano? Myslím, že všechny knihovny, které mají své vlastní loadery, je zbytečné RobotLoaderem vůbec indexovat…
- Filip Procházka
- Moderator | 4668
Abych si s váma taky zaflejmoval…
Na všechno teď používám UniversalClassLoader,
který spojuje PEAR standard a PSR-0 pro pojmenování a díky tomu není
potřeba, aby php procházelo několik loaderů, než se třída načte. Ke
knihovnám, které uznávají tenhle standard, má RobotLoader zakázaný
přístup, takže indexuju jenom app/
a cokoliv co
nejde jinak.
A kde je jaký soubor neřeším, IDE prakticky nevypínám :)
@**wdolek** má pravdu v tom, že je to na první pohled matoucí,
ale tím spíše si to zapamatuješ, kde máš příště hledat, aniž by jsi
se snažil si to pamatovat :) No a taky, common
je jediný
adresář, který má v Nette/
malé písmeno.
- wdolek
- Člen | 331
paranoiq napsal(a):
…stejně jako dříve u debaty o zpřehlednění jmenných prostorů zde argumentují zkušení vývojáři pohledem začátečníka, nad kterým se ale pořádně nezamysleli
Mam ale dojem, ze jsou to prave odpurci PSR-0, kteri stale haji nejasnou strukturu Nette knihovny ve jmenu tech mene zkusenych (snad nemusim davat do citace cely tvuj prispevek ;D).
Paklize je Nette urceno detem a zacatecnikum-programatorum, asi skutecne nema cenu dale diskutovat. Nerikej mi ale, ze ty ses do zdrojaku Nette nikdy nepodival ;D (a netvrd mi, ze jsi hned vedel, kde ktera trida je – tohle by neuhodla ani televizni kartarka, ktera predpovida po pulnoci na Prime).
Editoval wdolek (17. 11. 2011 4:01)
- wdolek
- Člen | 331
HosipLan napsal(a):
A kde je jaký soubor neřeším, IDE prakticky nevypínám :)
Zda se ale, ze ne vsechny IDE jsou multiplatformni (PHPEd), popripade ne vsechny IDE to zvladaji (Aptana mi s proklikavanim do Nette nefugnuje, Eclipse jen kdyz je venku hezky, NetBeans jzem zavrhl s posledni verzi (7))
…ale tím spíše si to zapamatuješ, kde máš příště hledat, aniž by jsi se snažil si to pamatovat :)
Zase tak casto do kodu Nette nelezu, abych si to musel vylozene pamatovat. Otravne je to, ze musim grepovat celou knihovnu, abych zjistil, kde se trida skutecne nachazi.
- hrach
- Člen | 1838
wdolek:
jednou jsem se podival na adresarovou strukturu a od te doby nemam jediny problem. proc? protoze to v zakladu psr0 je, a vyjimky jsou natolik logicke, ze nad tim nemusim ani premyslet.
takze kdybys misto tech kecu tady se na to podival, nemas problem. sorry, ale neverim, ze tu travis cas „pro druhe“ :P
- wdolek
- Člen | 331
hrach napsal(a):
takze kdybys misto tech kecu tady se na to podival, nemas problem.
Vyprosoval bych si nejake verbalni utoky hodne malych deti. Predpokladam, ze jsme zde vsichni alespon trochu na urovni, tak se podle toho chovejme.
A k tematu, aktualni seznam trid/souboru (ktery tedy stejne nikoho nezajima):
[er] "Nette\Application\AbortException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\ApplicationException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\InvalidPresenterException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\BadRequestException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\ForbiddenRequestException" does not correspond to path "Nette/Application/exceptions.php"
[er] "NetteModule\MicroPresenter" does not correspond to path "Nette/Application/MicroPresenter.php"
[er] "Nette\ArrayHash" does not correspond to path "Nette/common/ArrayHash.php"
[er] "Nette\ArrayList" does not correspond to path "Nette/common/ArrayList.php"
[er] "Nette\Callback" does not correspond to path "Nette/common/Callback.php"
[er] "Nette\Configurator" does not correspond to path "Nette/common/Configurator.php"
[er] "Nette\DateTime" does not correspond to path "Nette/common/DateTime.php"
[er] "Nette\Environment" does not correspond to path "Nette/common/Environment.php"
[er] "Nette\ArgumentOutOfRangeException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\InvalidStateException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\NotImplementedException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\NotSupportedException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\DeprecatedException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\MemberAccessException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\IOException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\FileNotFoundException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\DirectoryNotFoundException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\InvalidArgumentException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\OutOfRangeException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\UnexpectedValueException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\StaticClassException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\FatalErrorException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\Framework" does not correspond to path "Nette/common/Framework.php"
[er] "Nette\FreezableObject" does not correspond to path "Nette/common/FreezableObject.php"
[er] "Nette\IFreezable" does not correspond to path "Nette/common/IFreezable.php"
[er] "Nette\Image" does not correspond to path "Nette/common/Image.php"
[er] "Nette\UnknownImageFileException" does not correspond to path "Nette/common/Image.php"
[er] "Nette\Object" does not correspond to path "Nette/common/Object.php"
[er] "Nette\ObjectMixin" does not correspond to path "Nette/common/ObjectMixin.php"
[er] "Nette\DI\MissingServiceException" does not correspond to path "Nette/DI/exceptions.php"
[er] "Nette\DI\AmbiguousServiceException" does not correspond to path "Nette/DI/exceptions.php"
[er] "Nette\Mail\SmtpException" does not correspond to path "Nette/Mail/SmtpMailer.php"
[er] "Nette\Utils\RecursiveDirectoryIteratorFixed" does not correspond to path "Nette/Utils/Finder.php"
[er] "Nette\Utils\JsonException" does not correspond to path "Nette/Utils/Json.php"
[er] "Nette\Utils\NeonException" does not correspond to path "Nette/Utils/Neon.php"
[er] "Nette\Utils\RegexpException" does not correspond to path "Nette/Utils/Strings.php"
[er] "Nette\Utils\TokenizerException" does not correspond to path "Nette/Utils/Tokenizer.php"
… Ano, mohu se podivat, mohu se to namemorovat jako basnicku nebo jako matematicke vzorecky. Bohuzel pro mne Nette neni stredem vesmiru a pracuji i s jinymi frameworky – takze i kdybych si tuto informaci pamatovat chtel, stejne to vypustim po par dnech z hlavy.
Mou motivaci pro zmenu adresarove struktury je vymyceni co nejvice WTF faktoru z Nette… Chapu, ze jsem se nekterym dotkl jejich modly a rozumim tomu – proto zde ale uvadim svuj pohled na vec, a doufam, ze budu pochopen.
Shrnu-li to…:
Ve stavajici diskusi padly argumenty (doufam, ze jsem neco neprehledl):
- nedodrzeni PSR-0 je jednodussi pro novacky, protoze nevidi v Nette knihovne balast (a zaroven ze novacek v Nette knihovne stejne nema co delat, coz vlastne popira cely tento duvod)
- NetBeans umi proklikavat jmena trid
- na internetu je online dokumentace vsech trid vcetne zdrojaku
Me argumenty jsou:
- dodrzeni PSR-0 je common sense – zdravy selsky rozum (kterym je postizen okolni svet)
- pro nekoho, kdo dela v jinem frameworku je to zkratka WTF, byt ma treba IDE s proklikavanim a nebo je online a muze se podivat do dokumentace
- odpada pouzivani vice typu loaderu, vcetne kuriozity, kterou jsem nikde jinde nevidel – vyctovy loader se seznamem trid a mapovanim na soubor (a stale staci jen inicializovat jediny loader)
Zdrojovy kod se vice cte nez pise – proto tomu celemu davam takovou vahu – a proto by melo byt na prvni pohled jasne, kde co je.
Editoval wdolek (17. 11. 2011 14:28)
- hrach
- Člen | 1838
Exception – naprosto zřejmé. Navíc, tyto třídy člověk opravdu
nepotřebuje prohlížet, tady jde prakticky jen o jejich název. Naopak
oceňuji, že tyto desítky exception nedělají adresáře zabordelené, a tak
když potřebuji najít nějakou třídu, vidím opravdu je to podstatné. O
*nix napovídní ala [TAB] nemluvě, kdy místé doplnění
Sm[tab]tp.php
mi to dojede na Smtp
.
[er] "Nette\Application\AbortException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\ApplicationException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\InvalidPresenterException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\BadRequestException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\Application\ForbiddenRequestException" does not correspond to path "Nette/Application/exceptions.php"
[er] "Nette\ArgumentOutOfRangeException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\InvalidStateException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\NotImplementedException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\NotSupportedException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\DeprecatedException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\MemberAccessException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\IOException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\FileNotFoundException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\DirectoryNotFoundException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\InvalidArgumentException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\OutOfRangeException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\UnexpectedValueException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\StaticClassException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\FatalErrorException" does not correspond to path "Nette/common/exceptions.php"
[er] "Nette\Utils\JsonException" does not correspond to path "Nette/Utils/Json.php"
[er] "Nette\Utils\NeonException" does not correspond to path "Nette/Utils/Neon.php"
[er] "Nette\Utils\RegexpException" does not correspond to path "Nette/Utils/Strings.php"
[er] "Nette\Utils\TokenizerException" does not correspond to path "Nette/Utils/Tokenizer.php"
[er] "Nette\DI\MissingServiceException" does not correspond to path "Nette/DI/exceptions.php"
[er] "Nette\DI\AmbiguousServiceException" does not correspond to path "Nette/DI/exceptions.php"
[er] "Nette\Mail\SmtpException" does not correspond to path "Nette/Mail/SmtpMailer.php"
[er] "Nette\UnknownImageFileException" does not correspond to path "Nette/common/Image.php"
třídy naprosto zřejmé, pakliže patří do hlavního namespacu, ale neruší v root složce.
[er] "Nette\ArrayHash" does not correspond to path "Nette/common/ArrayHash.php"
[er] "Nette\ArrayList" does not correspond to path "Nette/common/ArrayList.php"
[er] "Nette\Callback" does not correspond to path "Nette/common/Callback.php"
[er] "Nette\Configurator" does not correspond to path "Nette/common/Configurator.php"
[er] "Nette\DateTime" does not correspond to path "Nette/common/DateTime.php"
[er] "Nette\Environment" does not correspond to path "Nette/common/Environment.php"
[er] "Nette\Framework" does not correspond to path "Nette/common/Framework.php"
[er] "Nette\FreezableObject" does not correspond to path "Nette/common/FreezableObject.php"
[er] "Nette\IFreezable" does not correspond to path "Nette/common/IFreezable.php"
[er] "Nette\Object" does not correspond to path "Nette/common/Object.php"
[er] "Nette\ObjectMixin" does not correspond to path "Nette/common/ObjectMixin.php"
// toto povazuji za ryze interní třidu
[er] "Nette\Utils\RecursiveDirectoryIteratorFixed" does not correspond to path "Nette/Utils/Finder.php"
nad čím bych se zamyslel – image bych přesunul do Utils.
[er] "NetteModule\MicroPresenter" does not correspond to path "Nette/Application/MicroPresenter.php"
[er] "Nette\Image" does not correspond to path "Nette/common/Image.php"
takže pokud budu praktický, tak potřebuji hledat použe dané třídy z hlavního namespacu. Opravdu si nepotřebuji prohlížet konstruktory a dědění vyjimek, na to mam api. A pokud tato jedina „problematická“ část je vyřešena složkou common, tj. velmi jednoduché na zapamatování, tak s tím nemám nejmenší problém a naopak strukturu oceňuji.
Vyprosoval bych si nejake verbalni utoky hodne malych deti
Někdo, kdo si na něco stežuje a v tu chvili dělá to stejné, je pro mě ignorant.
- wdolek
- Člen | 331
hrach napsal(a):
třídy naprosto zřejmé, pakliže patří do hlavního namespacu, ale neruší v root složce.
Zrejme… Uz skutecne nevim, co bych k tomu mohl vice dodat. Ano, v pripade Exceptions to smysl dava – na druhou stranu by to pak byla vyjimka v pouziti PSR-0. A dale se odkazuji na predesly post se seznamem argumentu pro/proti.
Někdo, kdo si na něco stežuje a v tu chvili dělá to stejné, je pro mě ignorant.
Nejsem si vedom toho, ze bych tu vykrikoval neco o „necich kecech“ ;) … + mi ta veta po tretim precteni nedava uplne smysl :(
Editoval wdolek (17. 11. 2011 14:52)
- Patrik Votoček
- Člen | 2221
Pár dní jsem tu pouze jako pozorovatel a jelikož se to tu točí pořád dokola tak se s trochou sebezapření taky zapojím.
Wdolku to je fakt takový problém zapamatovat si že nette dodržuje PSR-0 se dvěmi vyjímkami:
- třídy v „rootovském“ namespace Nette jsou ve složce common
- třídy vyjímek jsou v souboru common/exceptions.php případně u třídy které se týkají
Jediné kde tohle neplatí jsou 2 případy:
- MicroPresenter jehož namespace ve mě evokuje že se jedná o dočasný stav
- RecursiveDirectoryIteratorFixed což je jisto jistě jenom fallback na některý z bugů PHP
Je doopravdy problém si těchto pár pravidel zapamatovat? Stejně jako sis musel zapamatovat že v Nette není Controler ale Presenter a spoustu dalších věcí.
Někdo, kdo si na něco stežuje a v tu chvili dělá to stejné, je pro mě ignorant.
Nejsem si vedom toho, ze bych tu vykrikoval neco o „necich kecech“ ;) … + mi ta veta po tretim precteni nedava uplne smysl :(
Nevím no ale stěžovat si a tvrdit že jsme dospělí a tak by jsme se
měli bavit na úrovni. A vedle toho napsat verbalni utoky hodne malych
deti
. Mě nepřipadá jako vhodný pokus o nápravu.
- Yrwein
- Člen | 45
Patrik Votoček: (Úvod stejný.) Zde nejde o problém si něco zapamatovat. Ale o to, že je vůbec třeba si něco takového pamatovat, když opravdu snadnou úpravou (resp. nesložitou) jde celá věc hezky zjednodušit bez dalších zbytečných kompikací (tím myslím PSR-0 s výjimkami… na které jsou další výjimky).
Ale to zde již bylo psáno také…
Editoval Yrwein (17. 11. 2011 16:33)
- Vojtěch Dobeš
- Gold Partner | 1316
Podle mne má Nette uspořádání svoje výhody (např.: počet souborů). Je za ním logika, smysl. Jediný argument, který zde zaznívá, chápu jako „všechny knihovny to tak mají, ale Nette ne – musím si zapamatovat něco zvláštního“. Co dodat, já bych zase chtěl, aby Nette uspořádání (PSR-Nette) používaly ostatní knihovny, protože mi přijde přehlednější. A jestli se v PSR-0 pro každou vyjímku tvoří nový soubor, tak to potěš…
- wdolek
- Člen | 331
vojtech.dobes
Nette reseni mi ale neprijde univerzalni. A to, ze to „vsichni delaji nejak a Nette po svem“ to neni hlavni argument, ale uz jen takova poznamka – ono to ma asi nejaky duvod, proc se toho vsichni drzi. Duvodem je zjevne univerzalnost, a hlavne pritomnost toho selskeho rozumu, bez nutnosti si cokoliv pamatovat a je na prvni pohled videt, kde co je. (V teto zavorce bych rad zvyraznil to na prvni pohled … –na prvni pohled–)
Ano, mozna to v pripade Exceptions neni uplne vhodne, na druhou stranu dle meho univerzalnost PSR-0 prevysuje nevyhody.
Yrwein
+1
Mimochodem, napadlo me takove srandovni prirovnani: Pojdme psat dokumentaci pouze v Esperantu – Esperanto je snadny jazyk, a za jeho vznikem byla uslechtila myslenka. Nette se tak odlisi od vsech, a cele to bude hrozne skvele, protoze proste… esperanto. A az nekdo bude narikat, ze dokumentace neni v cestine nebo anglictine, muzeme mu rict, at se nauci tento jednoduchy jazyk.
Patrik Votoček napsal(a):
…A vedle toho napsat
verbalni utoky hodne malych deti. Mě nepřipadá jako vhodný pokus o nápravu.
„utoky hodne malych deti“ je vlastnost takovychto verbalnich utoku. Mohl jsem klidne napsat, „…zelene verbalni utoky“ :) Nepovazuji na tom nic divneho, a ani jsem tim nikoho nechtel insultovat.
Editoval wdolek (17. 11. 2011 22:09)
- Vojtěch Dobeš
- Gold Partner | 1316
Mně spíš jako esperanto připadá PSR-0 :) Zbytečně ukecané… myslím, že toto je jablko sváru (tedy že všeobecné použití pro mě není kritériem). Zapřísahám se, že už sem nic nenapíšu, a pokud náhodou Nette na PSR-0 přejde, nic se neděje… ale rozhodně mi nepřijde samolibě extravagantní, pokud má svůj způsob, který také dává smysl.
Editoval vojtech.dobes (18. 11. 2011 10:29)
- Filip Procházka
- Moderator | 4668
Pokud ti PSR-0 přijde moc ukecané, vždycky můžeš používat minified verzi Nette.
Pánové, vždyť se tady jenom napadáte (byť slušně, většinou) a ještě jsem nečetl jediný logický důvod, proč by to nemohlo být v PRS-0. Proč ne? Proč jo? Mě by to fakt zajímalo. Už jsem se účastnil minulého flamu na tohle téma a do dnes to nevím.
Ani jeden z důvodů proti PRS-0 není podle mě objektivní.
Disclaimer: autorovi je to úplně u pr*ele.
- Ondřej Mirtes
- Člen | 1536
wdolek +1, taky bych v Nette rád viděl PSR-0, protože při jeho použití nikoho nečekají žádná překvapení při hledání souborů a je to standard, který používá celý svět. Stejně jako PHPUnit.
- paranoiq
- Člen | 392
wdolek napsal(a):
Nerikej mi ale, ze ty ses do zdrojaku Nette nikdy nepodival ;D (a netvrd mi, ze jsi hned vedel, kde ktera trida je – tohle by neuhodla ani televizni kartarka, ktera predpovida po pulnoci na Prime).
do kódů Nette se dívám velice často. zároveň nepoužívám žádné IDE, ale PSPad. nalezení souboru v adresáři Nette je ale o několik řádů jednodušší problém než pochopení zdrojového kódu v něm. jak už vysvětlili jiný výše pravidla jsou jednoduchá: opěvované PSR0 + výjimka pro hlavní namespace + výjimka pro výjimky…
wdolek napsal(a): „ukaž univerzální řešení“
univerzální řešení neexistují. vždy se musí někdo přizpůsobit
- bene
- Člen | 82
Tak mi to nedalo :)
Chápu argumenty pro i proti. Osobně bych se vydal cestou „PSR-0“
i když je pěkné mít uklizenou root složku. Co se exceptions týče, tak
pokud mám třídu Json
a JsonException
hned je vidím
u sebe, to je podle mě plus. Na druhou stranu asi existuje spousta exception
nevázaných jménem. Tady má pak vyjímka pro jejich umístnění nějaký
smysl. Volil bych asi cestu speciálního adresáře pro daný namespace, který
by se jmenoval exceptions
nebo _exceptions
ať je
první a do něj bych ukládal všechny vyjímky. Výhodu to ma zřejmou.
Zajímají mě vyjímky? Kuknu do jednoho adresáře a mám je jak na
stříbrném podnose.
Pokud bych trochu odbočil tak co se týče adresářové struktury celé aplikace, tak Nette jde v sandbox naprosto opačnou cestou a „brutálně zaneřádí“ adresář hostingu.
- Spousta hostingů řeší subdomény adresářem (neřešme teď, že si asi nikdo neudělá subdoménu temp).
- Při 3 a více subdoménách je už adresář absolutně nepřehledný a to vůbec neberu v úvahu že bych chtěl pro různé subdomény vlastní aplikace v Nette (budu je pak přejmenovávat a sahat do aplikací abych opravil umístnění?).
- Viděl jsem hosting, kde se automaticky vytvářel adresář log pro logování a já do něj zapisovat nemohl.
- Musím v 5 adresářích z 6 mít .htaccess s „Deny from all“ – zapomenout na to nebo to nechtě smáznout při mazání všech logů nebo tempů, tak může být průšvich na světě.
Tohle jde naštěstí změnit a pro mě „nešikovnou“ strukturu jsem obalil adresářem application. Tudíž mám dva adresáře: www a application, který dále může obsahovat adresáře jako docs, migrations, … (takové adresáře v 99% mám, kam bych je nahrál? zase do rootu hostingu?)
Proč jsem ale na první dojem odbočil od tématu? Opravdu jen na první dojem. Protože mi nejde do hlavy proč je tolik lidí šťastných že má Nette v root adresáři čisto a pro začátečníka to je milý pohled, ale sandobx, který použije téměř každý začátečník se vydává NAPROSTO opačnou cestou. A upřímně, mít bordel v rootu hostingu je daleko větší problém a riziko než root adresář Nette.
- 22
- Člen | 1478
O jakém bordelu v rootu hostingu je řeč? Já tam nic takového nemám
:-) jestli si nedovedeš udržet pořádek v rootu hostingu prostým
umístěním projketu do adresáře app_name.com
, tak je to tvůj
problém a ne problém sandboxu.
Jinak mi tahle diskuze přijde úplně zbytečná a je asi 100 důležitějších věcí, která je v Nette potřeba řešit.
Už to někde proboha zamčete.
- bojovyletoun
- Člen | 667
Já jsem si sice na nové(3.5.) namespace zvykl , ale tím chci říct, že se mi nelíbí dělat změny. Kromě toho Netbeans 6.9.1 spolupracuje, takže se lze proklikat a funguje autocomplete a ve výsledku to neřeším a je skoro jedno. PS: api.nette.org si můžete stáhnout a uložit na disk–nemusíte být online.
Ještě pro doplnění: zdrojáky si prohlížím zhruba pořád stejně, jako před rokem.
Editoval bojovyletoun (20. 11. 2011 22:07)
- nanuqcz
- Člen | 822
bene napsal(a):
Proč jsem ale na první dojem odbočil od tématu? Opravdu jen na první dojem. Protože mi nejde do hlavy proč je tolik lidí šťastných že má Nette v root adresáři čisto a pro začátečníka to je milý pohled, ale sandobx, který použije téměř každý začátečník se vydává NAPROSTO opačnou cestou. A upřímně, mít bordel v rootu hostingu je daleko větší problém a riziko než root adresář Nette.
+1 :-)
- Filip Procházka
- Moderator | 4668
Složky app/
, www/
, log/
,
temp/
, tests/
v rootu webu, se kterými má část
hostingů problém.
- David Grudl
- Nette Core | 8218
Co tedy adresář common
přejmenovat na Nette
, aby
to bylo logické?
Zaujalo mě, kolik lidí tu kombinuje různé loadery pro různé knihovny. Vždyť RobotLoader je právě lékem na nutnost kombinovat více loaderů.
ad PSR-0: to je jeden z důvodů, proč má třeba Zend Framework (a zejména Magento) obrovské problémy s výkonností. Symfony je řeší tím, že si generuje cache, kde řadu samostatných souborů spojí do jednoho. Prostě mnoho souborů = smrt PHP. V obou případech to má ale vliv na podobu namespaces, které jsou poměrně dlouhé. Nebo toužíte po
foreach (Nette\Component\Finder\Finder::findFiles() as $file)
nebo catch (Nette\Component\Neon\Exception\ParseException $e)
class Basket extends Nette\Component\PhpFoundation\Object
ad NetteLoader: nezapomeňte, že existuje taky verze pro PHP 5.2, pro kterou je především NetteLoader určen.