Jak na jmenné prostory? | Je potřeba NetteLoader?

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

Omlouvám se, že spojuju dvě témata dohromady, ale souvisí spolu velmi úzce.

Pokud jste už programovali v PHP 5.3 s využitím jmenných prostorů, asi jste přišli na to, že je to děsněj opruz. Nakonec úkolem jmenných prostorů je vyřešit možné konflikty názvů tříd, nikoliv zpříjemnit programování. Člověk si dokonce pohrává s myšlenkou, jestli není lepší pod PHP 5.3 používat některou verzi frameworku určenou pro PHP 5.2.

Jenže v tom vidím úskalí:

  • existence více verzí je problém: pro kterou psát dokumentaci? pro kterou psát doplňky?
  • je tedy třeba směřovat k jedné verzi
  • ale které? nejpoužívanější verze (neprefixová pro 5.2) je vlastně nejhorší, protože jako jediná nemá jmenný prostor (i prefixovanou verzi lze považovat za verzi se „jmenným prostorem“) a může způsobovat konflikty.

Napadl mě trik, který jsem ukazoval na Poslední sobotě a který by umožnil, aby se pod PHP 5.3 dalo k třídám přistupovat jakýmkoliv způsobem:

$user = new Nette\Web\User;
echo $user instanceof User; // vrací true
echo $user instanceof NUser; // vrací true
echo $user instanceof Nette\Web\User; // vrací true

Tímto trikem by šla například vytvořit konvence, že pod PHP 5.3 lze každou třídu adresovat buď plným jmenným prostorem (Nette\Web\User) nebo zkráceným (NUser). Pod PHP 5.2 by se samozřejmě používal jen zkrácený zápis. Vyřešilo by to otázku, jak psát pluginy. Naopak vznikla by nejasnost v tom, který přístup je preferovaný a jak psát dokumentaci. Především však by se upozadila v současnosti nejpoužívanější verze – neprefixovaná pro 5.2. (což může být pro mnohé těžko přijatelné, ale řekněme si na rovinu, takhle verze je časovaná bomba a její existenci dnes považuju za chybu).

Nicméně, aby trik s aliasováním tříd Nette\Web\User === NUser fungoval na 100%, bylo by potřeba už při inicializaci načíst všechny třídy frameworku, tj. zrušit NetteLoader. Což by nemusel být nijak převratný krok: obyčejný příklad CD-collection u přihlašovacího okna načítá 70 % všech tříd a minifikovaná verze takto funguje odjakživa.

Jak by mohl framework vypadat bez NetteLoaderu můžete vyzkoušet zde https://github.com/…-NetteLoader


Tohle téma považuju za důležité a je třeba vymyslet, jakou cestou se ubírat. PHP 5.2 bude nutné podporovat alespoň ještě rok a existence dvou verzí (prefix a neprefix) je reálný problém. A přestávám si být jist tím, že plné jmenné prostory v PHP 5.3 jsou tou nejlepší budoucností, která všechno vyřeší. Ale možná jsem jen rozmlsaný a zvyknu si na ně :-)

Jan Tvrdík
Nette guru | 2595
+
0
-

Osobně mi jako nejlepší řešení připadá tlačit všude PHP 5.3 se jmennými prostory. Dokumentace se již nějakou dobu píše (má psát) primárně pro PHP 5.3 a u doplňků je to v současnosti na rozhodnutí autora, s čímž můžeme dělat akorát to, že doporučíme psát všechny doplňky pro PHP 5.3.

Vzhledem k tomu, že v produkčním prostředí používám vždy minimalizovanou verzi, tak se mě zrušení NetteLoaderu moc nedotkne. Ten trik představený na PS bych nechal ve výchozím stavu vypnutý a zapínal by se manuálně (třeba define('NETTE_MAGIC', TRUE) :).

Ohledně otravného psaní jmenných prostorů – pořád čekám na IDE, které to bude řešit za mě. Ale ani teď mi to nepřijde moc psaní navíc.

jtousek
Člen | 951
+
0
-

Pokud jde o podporu PHP 5.2, myslím, že finální verze 1.0 dříve jak za rok zřejmě nebude. PHP 5.3 přináší pár zajímavých novinek a udržování zpětné kompatibility mi v případě Nette 1.0 připadá spíše na škodu, protože nás o tyto novinky (hlavně late static binding a __callStatic) částečně ochuzuje. Proto si myslím, že pro PHP 5.2 by měla být určena hlavně verze 9.x a Nette 1.0 by mělo vyžadovat PHP 5.3, protože až bude konečně stable, PHP 5.3 už bude rozšířené.

Jmenné prostory v 9.x nechat jak jsou, ve verzi 1.0 pouze verze s nimi.

mlady
Člen | 24
+
0
-

jtousek napsal(a):

Pokud jde o podporu PHP 5.2, myslím, že finální verze 1.0 dříve jak za rok zřejmě nebude. PHP 5.3 přináší pár zajímavých novinek a udržování zpětné kompatibility mi v případě Nette 1.0 připadá spíše na škodu, protože nás o tyto novinky (hlavně late static binding a __callStatic) částečně ochuzuje. Proto si myslím, že pro PHP 5.2 by měla být určena hlavně verze 9.x a Nette 1.0 by mělo vyžadovat PHP 5.3, protože až bude konečně stable, PHP 5.3 už bude rozšířené.

Jmenné prostory v 9.x nechat jak jsou, ve verzi 1.0 pouze verze s nimi.

Je to síce otázka skôr na Nette Foundation, ale osobne očakávam príchod 1.0 skôr ako o rok. Každopádne si nemyslím, že PHP 5.3 bude v tej dobe už dostatočne rozšírené. Komunikoval som o PHP 5.3 s hostmonster.com a povedali mi, že by to radi nahodili ale cPanel má s PHP 5.3 problémy. Tým pádom sa to bude asi týkať všetkých hosterov, ktorí bežia na cPaneli.

Jan Tvrdík
Nette guru | 2595
+
0
-

Nette 1.0 by určitě mělo být funkční na verzi 5.2 alespoň stejně dobře, jak funguje nyní. Už dnes obsahuje Nette některé funkce, které v PHP 5.2 nebudou fungovat, ale s tím se zkrátka nedá nic dělat.

Majkl578
Moderator | 1364
+
0
-

Stejně jako Honza jsem pro jmenné prostory.
Nejednotnost doplňků se mi nelíbí, ale co nadělám. Chtělo by to napsat doporučení/žádost psát nějakou stejnou formou (jmenný prostor, třeba Nette\Extras apod.).
Používám verzi se jmennými prostory a k tomu momentálně Doctrine 2 také se jmennými prostory. A celkem mi (zatím) jmenné prostory vyhovují.

Ondřej Mirtes
Člen | 1536
+
0
-

Na práci se jmennými prostory se dá po několika týdnech zvyknout a už to není ani takový opruz, takže bych nějakou šílenou magii nedělal.

A jsem i pro to vyžadovat v 1.0 verzi PHP 5.3 (tzn. umazat všechny fixy pro zpětnou kompatibilitu) a pro PHP 5.2 nechat větev 0.9.x.

Dělá to tak i Zend Framework 2 a Doctrine 2, takže bych se toho fakt nebál. Spousta seriózních webhosterů (namátkou Blueboard, Tojeono, Savana) PHP 5.3 už provozuje.

jtousek
Člen | 951
+
0
-

David Grudl: Možná by bylo nejlepší ohledně kompatibility Nette 1.0 s PHP 5.2 dát anketu a zvážit pro a proti v samostatném vláknu tady na fóru aby se všichni mohli vyjádřit. (Tedy pokud takové ještě neexistuje, nehledal jsem.)

Patrik Votoček
Člen | 2221
+
0
-

Sice jsem se nakonec na Poslední Sobotu nedostal (kvůli závodům) a tak neznám konkrétní detaily implementace téhle „vychytávky“ ale i tak mě to připadá jako šílený WTF faktor. A rozhodně jsem proti.

Naopak souhlasím s tím aby se u 1.0 úplně odstřihla zpětná kompatibilita a byla pouze pro PHP 5.3. PHP 5.3 je tu a chtě nechtě ho budou brzy nebo později začít používat všichni. Vždyť i velcí hráči na „trhu“ jako Zend, Doctrine, Symfony a další přecházejí na jmenné prostory.

Majkl578
Moderator | 1364
+
0
-

Ondřej Mirtes: Také souhlasím.
vrtak-cz: Souhlasím ve všem.

Editoval Majkl578 (7. 6. 2010 17:57)

jtousek
Člen | 951
+
0
-

Ondřej Mirtes, vrtak-cz: Naprosto souhlasím.

Nette pro PHP 5.2 existuje a je velmi dobré, verze 1.0 by se měla posunout dále a to znamená využít maximum z dostupných nových technologií.

Editoval jtousek (7. 6. 2010 17:58)

Honza Marek
Člen | 1664
+
0
-

Ondřej Mirtes napsal(a):

A jsem i pro to vyžadovat v 1.0 verzi PHP 5.3 (tzn. umazat všechny fixy pro zpětnou kompatibilitu) a pro PHP 5.2 nechat větev 0.9.x.

To zní dobře.

Ani
Člen | 226
+
0
-

Ondřej Mirtes, vrtak-cz: Souhlas. Taky záleží kdy bude 1.0 finální, ale asi ne hned, tak bude php 5.3 zase o něco rozšířenější.

Jan Tvrdík: NetBeans s psaním docela slušně pomáhá.

David Grudl
Nette Core | 8082
+
0
-

Tak nevím… návrhy, aby se odstřihla podpora pro PHP 5.2, jsou dle mého projevem sobectví. Kvůli tomu, že jste jedni z mála, kdo mají na hostingu PHP 5.3, chcete odříznout většinu uživatelů? Proč? Co vám tak na podpoře 5.2 trhá žíly? V čem vás omezuje?

Ondřej Mirtes
Člen | 1536
+
0
-

Podpora pro PHP 5.2 je koule na noze. Ve frameworku straší funkce fixNamespace, fixCallback, třída DateTime53. Musíme řešit, jestli daný doplněk je pro PHP 5.2 nebo pro namespaceovanou verzi Nette, nemůžeme uvádět příklady s anonymními funkcemi na fóru a v dokumentaci namísto callbacků…

redhead
Člen | 1313
+
0
-

Ale vždyť můžeme používat verzi bez namespace na 5.3 ne?

Používám verzi pro 5.2 úplně v pohodě, nemám s ní problém. Žádné komplikace se stejně pojmenovanými třídami nemám (žádné nepoužívám). Na 5.3 se nechystám. A doufám, že dlouho ještě nebudu muset..

Editoval redhead (7. 6. 2010 20:36)

Jan Tvrdík
Nette guru | 2595
+
0
-

Souhlasím s Davidem. Přestože budu jeden z těch, které verzi pro 5.2 brzy opustí, považuji za naprostý nesmysl odstřihnout podporu pro PHP 5.2. Na spoustě hostinzích bude trvat ještě dlouho, než podpora pro PHP 5.3 přijde a ta „koule na noze“ mi nepřijde tak velká, abychom kvůli ní dělali takto radikální a unáhlené kroky.

Jan Tvrdík: NetBeans s psaním docela slušně pomáhá.

Jejich „docela slušně“ je na můj vkus ještě hodně málo.

Ondřej Mirtes napsal(a):

nemůžeme uvádět příklady s anonymními funkcemi na fóru a v dokumentaci namísto callbacků…

Ale můžete a dokonce byste měli.

Honza Marek
Člen | 1664
+
0
-

Majkl578 napsal(a):

Chtělo by to napsat doporučení/žádost psát nějakou stejnou formou (jmenný prostor, třeba Nette\Extras apod.).

Já nechápu, proč by měly všechny doplňky sdílet jedno namespace Nette\Extras? Jen hezky ať má každej doplněk svoje namespace.

David Grudl
Nette Core | 8082
+
0
-

Ondřej Mirtes napsal(a):

Podpora pro PHP 5.2 je koule na noze. Ve frameworku straší funkce fixNamespace, fixCallback, třída DateTime53. Musíme řešit, jestli daný doplněk je pro PHP 5.2 nebo pro namespaceovanou verzi Nette, nemůžeme uvádět příklady s anonymními funkcemi na fóru a v dokumentaci namísto callbacků…

Když už, je to koule na mé noze… Nedokážu si představit, proč by těch deset hintů pro podporu PHP 5.2 v celém frameworku mohlo někomu vadit.

Svůj názor na podporu PHP 5.2 můžete vyjádřit v dotazníku http://twtpoll.com/f36mxe

Honza Marek napsal(a):

Já nechápu, proč by měly všechny doplňky sdílet jedno namespace Nette\Extras? Jen hezky ať má každej doplněk svoje namespace.

Přesněji řečeno, co není oficiální součástí Nette by vůbec ve jmenném prostoru Nette být nemělo.

nAS
Člen | 277
+
0
-

Odstřihnout podporu PHP 5.2 je nesmysl už kvůli hlasování na PS, kde přes 90% lidí hlasovalo že používají verzi pro PHP 5.2 bez prefixů. Když někdo ví, že nebude řešit konflikty, nebo je vyřeší přejmenováním jiných knihoven než Nette, tak bych to nechal na něm a nenutil bych mu nějakou jinou verzi. Samozřejmě něco jiného je psaní doplňků, které by měly být co nejvíce univerzální. Proto navrhuji, aby se doplňky psaly v namespace verzi a udělal bych nějaký veřejný převodník na zbylé 2 verze. Poté by si každý mohl stáhnout tu verzi doplňku která mu bude vyhovovat. Pravděpodobně by to znamenalo, že by se muselo vytvořit pár pravidel jak psát kód, aby šel převést, ale to by neměl být zase takový problém (aspoň to lidi povede k tomu psát doplňky co nejpřehledněji) a pokud s tím někdo bude mít problém, určitě se najde někdo jiný, kdo to bude ochotný doopravit do správného tvaru.

despiq
Člen | 320
+
0
-

dobrovolne se pripravit o spokojene uzivatele verze 5.2 urcite rozumne neni,
aktualni pouzivani namespacu v kodu mi prijde zdlouhave ale na druhou stranu naprosto srozumitelne a jak bylo zmineno clovek si zvykne pomerne snadno

Šaman
Člen | 2632
+
0
-

U nás v práci není možné přejít na 5.3 z důvodu nekompatibility se staršími projekty. A dvě verze PHP šéf spravovat nechce ⇒ jsem rozhodně pro zachování kompatibility. A i s dobře napsanými doplňky s namespacem se dá pracovat v 5.2, stačí zakomentovat příslušné bloky.

David Grudl
Nette Core | 8082
+
0
-

Twtpoll mi anketu zařízlo po 100 hlasech, nicméně i tak lze z výsledků vyčíst, že podpora pro PHP 5.2 je zatím nutností. Navíc předpokládám, že hlasovali spíš „pokrokovější“ programátoři, v reálu bude situace pro 5.3 ještě horší.

Honza Kuchař
Člen | 1662
+
0
-

Též chci přejít na ver. s namespace, ale zatím mi projekty fungují na verzi bez nich.

Petr Daňa
Člen | 109
+
0
-

Podporu pro 5.2 rozhodně neodstřihávat. Dost silně pochybuju, že by se u nás ve firmě dala nasadit PHP verze 5.3, hlavně těžko by někdo zaplatil nutné úpravy a přechod na tuto verzi. Ono zrovna tohle není žádná sranda, ať už technicky či finančně.

washo
Člen | 88
+
0
-

Resim ted problem jestli pouzit prefixovanou verzi pro 5.2 nebo neprefixovanou. David pise ze neprefixovanou verzi povazuje za chybu, ale drtiva vetsina doplnku je pro prefixovanou. Vcera jsem svuj projekt odprefixoval, protoze mi prislo ze se preferuje neprefixovana verze, dneska jsem si vsimnul tohoto vlakna a ctu opak. Kterou verzi mam teda uprednostnit?

jtousek
Člen | 951
+
0
-

Prefixovaná verze se používá aby Nette nezabíralo svými třídami tolik obecných slov – tedy hlavní důvod je kompatibilita s jinými frameworky a možnost používat tato obecná slova ve svých vlastních třídách. Většina vývojářů, kteří používají Nette ale používá pouze Nette a raději volí verzi bez prefixů (pokud vím tu prefixovanou volí málokdo). Pokud ti nevadí, že Nette používá pro třídy značně obecná slova zvol spíše neprefixovanou.

Ideální je samozřejmě přechod na PHP 5.3 a jmenné prostory pokud je to možné. ;)

washo
Člen | 88
+
0
-

jtousek napsal(a):

Prefixovaná verze se používá aby Nette nezabíralo svými třídami tolik obecných slov – tedy hlavní důvod je kompatibilita s jinými frameworky a možnost používat tato obecná slova ve svých vlastních třídách. Většina vývojářů, kteří používají Nette ale používá pouze Nette a raději volí verzi bez prefixů (pokud vím tu prefixovanou volí málokdo). Pokud ti nevadí, že Nette používá pro třídy značně obecná slova zvol spíše neprefixovanou.

Ideální je samozřejmě přechod na PHP 5.3 a jmenné prostory pokud je to možné. ;)

No to je mi jasne. Me jde hlavne o to, ze prefixovana verze byla nedavno experimentalne odstranena z downloadu a ted zase plati za lepsi = chaos. To me trochu vydesilo. Jde mi o to, kterou verzi Nette Foundation drive sestreli, nebo jestli se treba neuvazuje o nejakem toolu který bude schopen aplikaci prechroustat z namespacovane verze do prefixovane (nebo neprefixovane) … proste, ktera je perspektnivnejsi (pokud nemohu zatim prejit na 5.3).

jtousek
Člen | 951
+
0
-

Pokud jde o následující vývoj tak očekávám, že se tak nějak budou udržovat a používat obě dvě verze ve větším či menším měřítku. S tím, že kdo může přejde na 5.3, kde už prefixovaná verze nemá co dělat.

Patřím mezi ty šťastlivce, kteří mají VPS s PHP 5.3 takže tenhle problém naštěstí neřeším. Osobně bych v tvém případě volil neprefixovanou – snadněji si zvykneš na verzi se jmennými prostorami, získáš kompatibilitu s doplňky a pokud bys chtěl aplikaci v budoucnu překopat na jmenné prostory nebude to takový problém (stačí vyměnit verzi Nette a do všech souborů dopsat klauzule use – sice otrava, ale když ti IDE trochu pomůže tak se to dá).

Celkově je to ale spíše věc osobního názoru. Můj je ten použít neprefixovanou, pokud nemáš nějaký zásadní důvod ji nepoužít.

Majkl578
Moderator | 1364
+
0
-

David Grudl napsal(a):

Tohle téma považuju za důležité a je třeba vymyslet, jakou cestou se ubírat.

Beta verze Nette 1.0 se blíží a myslím si, že v ní už by o takovýchto věcech mělo být rozhodnuto.

Jak to tedy vypadá?
Osobně si nemyslím, že používání tří konvencí pojmenovávání v rámci jedné verze frameworku je výhoda, ale na druhou stranu není to taková koule na noze jako 3 rozdílné verze Nette se vzájemnou nekompatibilitou doplňků. Každý by si používal co chce a i přes to by doplňky fungovaly všem.

Pokud by nakonec na podporu všech tří verzí pojmenovávání došlo, naprosto elegantním řešením problému by bylo použití funkce class_alias (bohužel nelze použít už teď – funkce je dostupná od 5.3).

westrem
Člen | 398
+
0
-

Preco vsetci uvazuju vylucne iba nad moznostami Namespace a nie Namespace? Podla mna ked sa clovek nad tym zamysli, je jasna volba prefixed verzia pomocou „N“ na zaciatku kazdej triedy. Taketo ujednotene riesenie ako sam David spomina poskytuje v podstate namespace a netreba riesit PHP 5.2 alebo 5.3 (ked odmyslim tych par fixov, ktore David spomina, ze su vo verzii pre 5.2).

Pre mna bola prefixed verzia jasnou volbou a napriek tomu, ze na hostingu by uz malo byt PHP 5.3 podporovane, ostavam na 5.2.

Vie niekto zhrnut nejaku velku nevyhodu prefixed verzie ako takej, alebo aky je dovod, ze okrem prveho Davidovho prispevku ju nikto nespomina?

Osobne tiez pre vsetky „svoje“ triedy mimo Nette pouzivam prefixed syntax, kde prependujem pismenko „P“ a zatial s tym nebol problem.

Majkl578
Moderator | 1364
+
0
-

westrem napsal(a):

Vie niekto zhrnut nejaku velku nevyhodu prefixed verzie ako takej, alebo aky je dovod, ze okrem prveho Davidovho prispevku ju nikto nespomina?

Asi to bude znít divně, ale nelíbí se mi to. Nelíbí se mi to vizuálně a nelíbí se mi to, protože si to hraje na jmenné prostory, jimiž to není.

Zajímalo by mě:
 – jak bys řešil subnamespaces, Nette\Forms\Form by NFForm, Doctrine\ORM\Query\AST\Join by bylo DOQAJoin atd.
 – proč nevyužívat toho, co se v jiných jazycích používá a je nativně podporováno
 – co ti vadí na podobě jmenných prostorů v PHP

Osobne tiez pre vsetky „svoje“ triedy mimo Nette pouzivam prefixed syntax, kde prependujem pismenko „P“ a zatial s tym nebol problem.

Já zas jmenný prostor, např. App.


Házej po mně třeba kameny, ale prefixování názvu třídy místo použití vlastnosti jazyka mě neláká.

westrem
Člen | 398
+
0
-

Asi to bude znít divně, ale nelíbí se mi to. Nelíbí se mi to vizuálně a nelíbí se mi to, protože si to hraje na jmenné prostory, jimiž to není.

Ano hraje si to, plne rozumiem problemu, ze to neriesi namespaces. A neznie to divne, niekomu to proste nemusi vizualne sediet, kazdy mame svoje coding navyky.

jak bys řešil subnamespaces, Nette\Forms\Form by NFForm, Doctrine\ORM\Query\AST\Join by bylo DOQAJoin atd.

Tu je ten problem, ze toto by som neriesil. Proste veskere namespaces od Nette by sa zhrnuli do pociatocneho pismena „N“, tzn ak by som videl NForm, viem, ze je z Nette ale uz neriesim ci je z Nette\Forms alebo Nette\Web alebo pod. Otazka, je toto naozaj nutne rozlisovat?

proč nevyužívat toho, co se v jiných jazycích používá a je nativně podporováno

Pretoze tu sa bavime konkretne o PHP a bohuzial pri PHP je situacia, ze 5.2 to nevie a 5.3 ano a obe verzie su dost zastupene a preto mam pocit, ze vobec David hlada kompromis. V Jave, ktora to ma nativne toto riesit nemusis, proste NS pouzivas, lenze tu kde je vela ludi na to nezvyklych a NS pouzivaju len pokrokovi programatori, ktori na to maju moznosti (hosting) to treba nejak riesit.

co ti vadí na podobě jmenných prostorů v PHP

Apriori nic, aposteriori to co som spomenul vyssie, roznorodost pri verziach, ktore ide hned po sebe, kebyze sa bavime, ze PHP 4 to nevie a 5.x ano tak vlastne sa ani bavit nemusime.

Házej po mně třeba kameny, ale prefixování názvu třídy místo použití vlastnosti jazyka mě neláká.

Nemam proc hadzet kameny nebo hocico jineho, jak vravim, mne vyhovuje prefixed, pretoze s nim mozem ficat na 5.3 aj 5.2 a nie som tak viazany verziou PHP.

Patrik Votoček
Člen | 2221
+
0
-

Úplně jsem zapoměl že tohle vlákno existuje. Nicméně abych přispět svou troškou do mlýna.

Existence 3 různých verzí Nette Framworku mě také vadí. Rád bych aby PHP 5.2 konečně shořelo v pekle. Ale to se jen tak nestane. Problém je že PHP je tak rozšířený jazyk a je něm postaveno takové množství aplikací že aktualizace samotného PHP na hostinzích je běh na hodně dlouhou trať. Podívej te se jak dlouho je tu třeba PHP 5.0.0 a i přes to ještě dnes narazíte na aplikace pro PHP 4.x (nejčastěji 4.4.x). Navíc rozdíl mezi PHP 5.2 a 5.3 z pohledu namespace je tak obrovský jako rozdíl v OOP u PHP 4.x a 5.x. I když moc nechápu lidi, kteří stále setrvávají u PHP 5.2. Můžou si přece aktualizovat PHP na 5.3 a provozovat 5.2 aplikace na něm. A nové aplikace už psát lépe a naplno využívat síly PHP 5.3.

Osobně jsem pro zrušení základní verze Nette bez namespace a bez prefixů už u verze 1.0. A o zrušení prefixed verze bych se bavil cca za rok kdyby mohlo být Nette 2.0. (Ostatně by se tím přidalo k Doctrine 2.0, Zend Framework 2.0 a Symfony 2.0).

Roman Ožana
Člen | 52
+
0
-

Souhlas ze sta procent.

Patrik Votoček
Člen | 2221
+
0
-

Prosím necituj příště předchozí příspěvek. Zbytečně to za*** fórum. (citaci jsem odstranil)

Honza Marek
Člen | 1664
+
0
-

Rozumnou řeč ten vrták pronesl.

srigi
Nette Blogger | 558
+
0
-

Tiez som za to aby Nette 1.0 za sebou spalilo mosty a vykaslalo sa na drevenu dobu PHP-5.2.

na1k
Člen | 288
+
0
-

Tak to já jsem zase proti odříznutí 5.2

Proč zbytečně (ano, zbytečně) zahazovat značnou část uživatelů?

Já jsem pro to, aby verze 1.0 vyšla v prefixované verzi pro 5.2 a namespacované pro 5.3 s tím, že by obě obsahovaly Davidův trik, a tudíž NAppForm === \Nette\Application\AppForm.
Zahození neprefixované verze považuju za nutnost v každém případě. V 5.3 jsem pro namespace, protože to využívá jazyka a ne umělého namespacování. Teď se NS možná jeví jako zbytečnost, ale weby budou stále více „slepované“ a krytí tříd bude stále větší problém. A pro 5.2 zbývají prefixované třídy. Je to sice taková berlička, vypadá to divně, ale je to funkční a praktičtější, opět kvůli nekolidujícím třídám.

Jen jsem asi nepochopil, jak by taková rovnost názvů prefix/NS fungovala u doplňků. Řekněme, že mám doplněk \Extras\Forms\DatePicker. Přeložilo by jej Nette na něco jako EDatePicker? A co případná kolize jména s \Extras\DatePicker? … Pokud by toto ale bylo nějak ošetřené, tak to vidím jako ideální řešení, protože by doplňky byly „automaticky“ v obou verzích (až na specifické funkce, samozřejmě) a nebylo by třeba řešit NS.

Editoval na1k (9. 9. 2010 14:03)

Jod
Člen | 701
+
0
-

Ja som proti. Myslím, že tebe to nijak neuškodí, keď bude nette mať aj naďalej podporu pre 5.2, no mne to znemožní používať nové nette verzie v práci.

redhead
Člen | 1313
+
0
-

Taky nevím, proč ty verze odstřihnout. Je přece na každým, co uzná za vhodné používat. Já s jistotou vím, že nepoužívám, žádné konfliktní knihovny a tak nemám důvod používat prefixed ani namespaced verzi.

na1k
Člen | 288
+
0
-

redhead, jasně, ty v tom pořádek máš, já taky, byť bych díky NS nemusel. Zatím je ale Nette spíš komornější projekt, ale se stabilní 1.0 bude určitě snaha dostat jej za hranice republiky, ideálně i Evropy. A s tím přichází i to, že lidí co v tom mají jasno, bude stále míň. K frameworku se dostanou programátorští BFU, kteří budou chtít sekat weby jako Baťa cvičky, jak je jim slíbeno, a ne řešit jestli je komponenta pro jejich verzi php a ještě pro jejich verzi Nette. Buď se na to vykašlou úplně anebo budou po autorech škemrat „porty“ do jiných verzí Nette.

Je to otázka praktičnosti a udržovat tři verze Nette, byť pomocí generátorů, je záhul. Není to jenom o tom dát na web linky ke stažení, ale pořád to musíš řešit – ve fóru, v issues, doplňcích,…

redheadJod nejste žádní začátečníci. To je pro vás opravdu nemožné přejít jen z neprefixované verze na prefixovanou? Nemůžu si pomoct, ale vidím to na pár průchodů „Search and replace“ a nanejvýš přegenerování dokumentace. Je tam snad ještě nějaký jiný opravdu závažný problém, který by vyvážil pohodlnost a přenositelnost doplňků?

redhead
Člen | 1313
+
0
-

Pokud se jedná o komponenty, tak tam to chápu, stejně tak u zahraničních BFU. Ale zas nevím, proč ji odstřihnout násilím. Klidně ať zmizí z downloadů nebo tam připsat varování. Komponenty mi zrovna nevadí, ty si klidně přepíšu (nebo si napíšu vlastní; prakticky ani nevím jestli nějaké 3rd-party komponenty používám)

Majkl578
Moderator | 1364
+
0
-

<ot>Když to tak čtu, myslím, že okolo Nette & PHP 5.4 bude jednou ještě zajímavá diskuze. To totiž přinese podporu traitů, skalárních typehintů, podporu $this v closurách, rozhraní JsonSerializable, array dereferencing a nějaké další věci.</ot>

BigCharlie
Člen | 283
+
0
-

I já jsem pro zachování verzí pro PHP 5.2. Argumenty typu líbí nelíbí sice chápu, ale důležitější mi připadá výsledek ankety, kde se ve všech otázkách cca 50% odpovědí zastává verzí pro PHP 5.2 (samozřejmě nejdůležitější je pro mě, že to využívám :-))

vidím to na pár průchodů „Search and replace“ a nanejvýš přegenerování dokumentace. Je tam snad
ještě nějaký jiný opravdu závažný problém, který by vyvážil pohodlnost a přenositelnost doplňků?

v komerční sféře třeba otázku, kdo to zaplatí když priority jsou jinde a času není nazbyt. Nebo současný běh nových projektů a velkého projektu, který pochází z doby PHP 4.xx, funguje na 5.2 a stále se hodně využívá, ovšem s PHP 5.3 má problémy. Všechno není černobílé.

A to bych na PHP 5.3 přešel velmi rád…

na1k
Člen | 288
+
0
-

BigCharlie, bavil jsem se o přechodu PHP5.2 bez prefixů → PHP5.2 s prefixy

Možná je tohle téma trochu zamotané, ale pochopil jsem ho jako debatu nad tím, které „verze“ Nette do budoucna zachovat – nonprefix, prefix, namespace. To že se bude podporovat jak 5.2, tak 5.3 beru jako hotovou věc. (A taky i proto je třeba řešit například „přenositelnost“ doplňků.)

Editoval na1k (9. 9. 2010 17:19)

Majkl578
Moderator | 1364
+
0
-

BigCharlie napsal(a):

Nebo současný běh nových projektů a velkého projektu, který pochází z doby PHP 4.xx, funguje na 5.2 a stále se hodně využívá, ovšem s PHP 5.3 má problémy. Všechno není černobílé.

A to bych na PHP 5.3 přešel velmi rád…

Tohle je nesmyslný argument. Na serveru může běžet jak 5.2, tak 5.3 zároveň a jednotlivé aplikace využívat to co chtějí.

Ondřej Mirtes
Člen | 1536
+
0
-

Tahle diskuse tu nedávno byla. Davidova anketa na Twitteru prokázala, že lidi PHP 5.2 ještě potřebují.

Osobně bych z webhostingu, kde 5.3 není, utekl, a z práce, kde by po mně chtěli 5.2, také. Ale bohužel to za ostatní zařídit nemůžu :) Ještě rok to s tou verzí pro 5.2 přežijeme, dokumentaci a addons pište prosím pro PHP 5.3 s namespaces.

srigi
Nette Blogger | 558
+
0
-

Vase argumenty ma donutili k zamysleniu sa. Svoj povodny extremny nazor by som teda poupravil jednoducho – zbavme sa neprefixovanej verzie (aspon teda v 1.0). Sam robim s prefixovanym frameworkom (Yii prefixuje vsetky svoje triedy C – CWebUser, CDbCriteria a pod.). Dobre sa na to zvyka – hned viem ci robim so svojou alebo frameworkovou triedou.

Patrik Votoček
Člen | 2221
+
0
-

Jak to tady tak čtu tak asi u spousty lidí došlo k nepochopení „znovu otevření“ tohoto vlákna. (Asi se mělo založit nové).

Ale pokud jste četli tento můj post. Tak by jste měli chápat že už se tady nebavíme o odstřihnutí PHP 5.2 u Nette 1.0((už bylo dávno rozhodnuto že se to dělat nebude)). Ale bavíme se tady o zrušení non-prefixed varianty u Nette 1.0.

To že tato varianta byl krok vedle uznal i sám david. A úprava stávajících scriptů z non-prefixed na prefixed verzi doopravdy není složitá. (Navíc většina z vás to bude řešit zároveň s aktualizací z 0.9.x na 1.0 – takže se stejně spoustě úprav nevyhnete). Totální zavrhnutí varianty pro PHP 5.2 bych jak už jsem psal řešil tak za rok u Nette 2.0.

Navíc to bude asi ještě celkem sranda protože je dost možné že za rok tu bude ještě lepší a dokonalejší PHP 5.4. Ale to bych už moc předbíhal.

Takže ještě jednou už nediskutujeme o zrušení podpory PHP 5.2 u Nette 1.0 ale o zrušení non-prefixed varianty Nette 1.0