Adresarova struktura Feature-Re-Request (#2)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wdolek
Člen | 331
+
0
-

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.

Patrik Votoček
Člen | 2221
+
0
-

Říká se tomu PSR-0…

A ehm http://zdrojak.root.cz/…7439/vlakno/#…

nanuqcz
Člen | 822
+
0
-

wdolek: Pročetl jsem si zmíněné vlákno, a souhlasím s tebou. I když bych tomu osobně dával malou váhu :-)

arron
Člen | 464
+
0
-

Netuším,co používás za IDE, ale když v netbeansech podrzim CTRL a kliknu na třídu, tak se mi otevře soubor s její definicí: -) Takže tohle vlastně vůbec neresim… chápu,že Té to štve,ale například mě to přijde takhle docela logické a zvyknul jsem si na to.

wdolek
Člen | 331
+
0
-

: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.

Jan Endel
Člen | 1016
+
0
-

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ů.

wdolek
Člen | 331
+
0
-

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
+
0
-

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.

Majkl578
Moderator | 1364
+
0
-

Já jsem pro to, aby cesty odpovídaly názvům tříd (a tedy i dodržovaly PSR-0).
Mimochodem, třída Nette\Loaders\NetteLoader se mi nelíbí (s tímhle výčtem je Nette celkem kuriózní) a RobotLoader nepoužívám (používám PSR-0 autoloader).

wdolek
Člen | 331
+
0
-

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
+
0
-

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)

22
Člen | 1478
+
0
-

:-)

Nox
Člen | 378
+
0
-

Řekl akorát svůj názor :P a úplná blbost to není, logiku to přece má – přestože mě osobně to taky nikdy netankovalo, ctrl+klik a je to (i když v poslední době mi to nějak blbne), navíc mi přijde struktura celkem intuitivní a skoro PSR0 to taky je

nanuqcz
Člen | 822
+
0
-

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 | 1834
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

č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
+
0
-

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
+
0
-

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
+
0
-
  1. 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é
  2. 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
+
0
-

Nox napsal(a):

  1. 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
+
0
-

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
+
0
-

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
+
0
-

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.

wdolek
Člen | 331
+
0
-

@paranoiq: mohl bys prosim uvest zpusob, jak pojmenovavat soubory / tridy / jmenne prostory, aby to bylo in a cool, a ne tak „stupidni“ jako PSR-0 – ale zaroven univerzalni a logicke pro vsechny?

hAssassin
Člen | 293
+
0
-

btw a co API s vyhledavacem? Lenost programatoru me stale neprestava udivovat, jen se bojim az se zdrojaky budou kodit sami a my vsichni prijdem o praci :-D

22
Člen | 1478
+
0
-

Ja bych to tu zamčel, je to pořád dokola. všichni už o tom víme, ale dělat s tím nemůžeme nic.

wdolek
Člen | 331
+
0
-

hAssassin napsal(a):

btw a co API s vyhledavacem? Lenost programatoru me stale neprestava udivovat

Takze krome diktatu „musis pouzivat jedine NetBeans“ tu mame dalsi „musis byt neustale online“… ? :)

hrach
Člen | 1834
+
0
-

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
+
0
-

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 | 1834
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

  1. Spousta hostingů řeší subdomény adresářem (neřešme teď, že si asi nikdo neudělá subdoménu temp).
  2. 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í?).
  3. Viděl jsem hosting, kde se automaticky vytvářel adresář log pro logování a já do něj zapisovat nemohl.
  4. 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
+
0
-

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.

bene
Člen | 82
+
0
-

22 napsal(a):

O jakém bordelu v rootu hostingu je řeč? Já tam nic takového nemám :-) jestli si nedovedeš udržet…

Přečti si to prosím pořádně.

bojovyletoun
Člen | 667
+
0
-

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)

Aurielle
Člen | 1281
+
0
-

bojovyletoun: API je přímo v archivu s Nette (pokud stahuješ tady z webu).

nanuqcz
Člen | 822
+
0
-

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 :-)

22
Člen | 1478
+
0
-

pořád nevím co myslíte tím bordelem na hostingu v případě sandboxu??

Filip Procházka
Moderator | 4668
+
0
-

Složky app/, www/, log/, temp/, tests/ v rootu webu, se kterými má část hostingů problém.

David Grudl
Nette Core | 8135
+
0
-

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.