Jmenné prostory – Last Call Announcement

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

Ručně to nepředělávejte, dám do distribuce automatický předělávač.

Ondřej Mirtes
Člen | 1536
+
0
-

Že teď nedokážu pro Nette napsat ani trochu kódu z hlavy a všechno musím hledat mě deptá, ale snad si zvyknu.

BTW: Proč Nette\Utils\Json, ale Nette\StringUtils (ve složce common) ?

Aurielle
Člen | 1281
+
0
-

Nemůže to být rezervovaným slovem string? (stejně jako array, bool, function, …)

Ondřej Mirtes
Člen | 1536
+
0
-

Do teď to Nette\String bylo.

jansfabik
Člen | 193
+
0
-

nene, string ani bool rezervované nejsou (viz PHP dokumentace)

to o čem možná mluvíš je přetypovaní ((string) a (bool))

Editoval jansfabik (14. 4. 2011 22:27)

Patrik Votoček
Člen | 2221
+
0
-

Nette string bylo i předtím. Jsem rád že jsem to na nové namespace předělával ručně (bylo to kvalitní první osahání).

Proč je Nette\DI a né Nette\DependencyInjection když existuje Nette\ComponentModel ?

David Grudl
Nette Core | 8221
+
0
-

Změnilo se toho sice hodně, ale z pohledu vývojáře jde vlastně o těchto 10 bodů:

  1. výjimky, které byly bez NS, mají nyní prostor Nette
  2. Debug je teď Nette\Diagnostics\Debugger, ale chci udělat hard alias, např. NDebug
  3. application responses jsou Nette\Application\Responses, routers v Nette\Application\Routers a presenter & control v Nette\Application\UI
  4. z AppForm se stal (s těžkým srdcem) Nette\Application\UI\Form
  5. Finder, Json, Neon, Paginator a Html jsou v Nette\Utils, Tools je fuč
  6. ArrayTools je ArrayUtils a String je StringUtils
  7. Nette\Mail\Mail je Nette\Mail\Message
  8. ITranslator je v Nette\Localization
  9. cache storages jsou v Nette\Caching\Storages
  10. low level: context je v Nette\DI, komponenty v Nette\ComponentModel a Nette\Templates → Templating

Na ostatní věci by programátor neměl narazit.

Přes veškerou skepsi a strastiplnost hledání kompromisu si myslím, že to jsou změny k dobrému. Dle mého jsou ty změny intuitivní (jinak bych je takto nedělal) a asi jediné nejisté místo vidím v bodě 5).

David Grudl
Nette Core | 8221
+
0
-

Patrik Votoček napsal(a):

Proč je Nette\DI a né Nette\DependencyInjection když existuje Nette\ComponentModel ?

Protože to budu třeba školit ;-) (napište dependencY InjeCtion brrr)

Patrik Votoček
Člen | 2221
+
0
-

David Grudl napsal(a):

  1. z AppForm se stal (s těžkým srdcem) Nette\Application\UI\Form

:-D

David Grudl napsal(a):

Protože to budu třeba školit ;-) (napište dependencY InjeCtion brrr)

Dobrý argument! :-)

David Grudl
Nette Core | 8221
+
0
-

Převodník je v distribuci pod názvem tools\Code-Migration\class-updater.php. Před spuštěním si soubory zazálohujte a změny ručně zkontrolujte.

Alternativně lze použít soubor aliasů v tools\Code-Migration\compatibility-aliases.php.

Proki
Člen | 66
+
0
-

Budou se patřičně měnit názvy tříd (tam kde to lze a názvy nekolidují) i ve verzi pro PHP 5.2?

David Grudl
Nette Core | 8221
+
0
-

V případě 5.2 by se změny týkaly těchto tříd:

  • ArrayTools, ArrayTools → ArrayUtils, StringUtils
  • DownloadResponse → FileResponse
  • ForwardingResponse → ForwardResponse
  • RedirectingResponse → RedirectResponse
  • RenderResponse → TextResponse
  • MultiRouter → RouteList
  • FileUpload → UploadControl
  • DummyStorage → DevNullStorage
  • Mail → Message (nebezpečí kolize, možná MailMessage)
  • Uri, Uri → Url (nebezpečí kolize), UrlScript
  • Debug → Debugger (možná Debug bude hard alias i v PHP 5.3)

V 5.2 se v tuto chvíli nemění nic, nechtěl jsem kvůli pár třídám dělat komplikace u něčeho, co s podporou stejně dřív nebo později skončí. Na druhou stranu je fakt, že se tím zbytečně rozevírají nůžky odlišností a těch pár tříd ArrayUtils, StringUtils, responses a RouteList by se i v 5.2 změnit mohli.

Co myslíte?

David Grudl
Nette Core | 8221
+
0
-

Poprosil bych všechny, aby otestovali převodní nástroje (viz info) a poslali nějaké resume.

Během tak dvou dnů bych potom napsal oficiální oznámení o nových namespacech.

Patrik Votoček
Člen | 2221
+
0
-

Testoval jsem a vše OK dokonce to jde „zneužít“ na uklizení kódu. Ale stále čekám na komentář tady https://github.com/…b2da0b25a6f1#… .

Ad 5.2 verze přešel bych na nové + přidal aliasy pro staré (existence obojího současně – podobně jako ‚compatibility-aliases.php‘)

David Grudl
Nette Core | 8221
+
0
-

V 5.2 dělat aliasy nejde.

A služby přejmenování teprve čeká. Zvažuju upustit od pojmenování podle interfaces a rovnou používat jednodušší aliasy ala httpRequest apod.

kravčo
Člen | 721
+
0
-

Nešli by aliasy pre staré triedy vyrobiť takýmto spôsobom? Mohlo by to mať dopad na výkon, ale keď je niekomu prednejšia spätná kompatibilita, tak tú cenu rád zaplatí…

class DownloadResponse extends FileResponse {}
//...
Pavel Kouřil
Člen | 128
+
0
-

David Grudl napsal(a):

Poprosil bych všechny, aby otestovali převodní nástroje (viz info) a poslali nějaké resume.

Jednu app převedlo bez problémů, zbytek teprv zkusím (ale protože sou podobné, tak by je to nejspíš taky mělo převést) … jen jsem měl prve problém sehnat minified verzi nette (a nechtělo se mi buldovat si jej sám), ale pak jsem objevil nightly buildy v downloadech :)

Díky moc za nové namespaces a hlavně převodník

Ondřej Mirtes
Člen | 1536
+
0
-

kravčo – tohle je strašně náchylné na chyby.

$r = new FileResponse;
dump($r instanceof DownloadResponse); // false!
jtousek
Člen | 951
+
0
-

kravčo: Taky by to asi dělalo problémy s anotacemi.

kravčo
Člen | 721
+
0
-

Ondřej Mirtes napsal(a):

kravčo – tohle je strašně náchylné na chyby.

$r = new FileResponse;
dump($r instanceof DownloadResponse); // false!

Bol by to nástroj pre ľudí, ktorí nechcú zdrojáky prepisovať a takto môžu takmer bez zásahu používať up-to-date Nette. Toto riziko sa ich určite netýka.

Rovnako to platí aj pre dôvody použitia class_alias() vo verzii pre PHP 5.3. Myslím, že nik nechce, aby sa v kóde miešali napr. Nette\Web\HttpRequest a Nette\Http\Request

jtousek napsal(a):

kravčo: Taky by to asi dělalo problémy s anotacemi.

Aké?

jtousek
Člen | 951
+
0
-

kravčo: Jo jasně v samotné aplikaci by to nebylo takže s tím by problém nebyl… srry už jsem napůl spal když jsem to psal.

umrlec
Člen | 56
+
0
-

V co se prosím vás přetransformovala třída TemplateFilters ? Nebo byla odstraněna? Nebo jsem slepý?

Editoval umrlec (16. 4. 2011 18:22)

jtousek
Člen | 951
+
0
-

Byla rozdělena a přesunuta do doplňků.

https://addons.nette.org/#…

David Grudl
Nette Core | 8221
+
0
-

Last Last Call Announcement

Jsou-li nějaké připomínky k poslední verzi, promluvte prosím teď nebo nikdy :-)

(kurňa to je adresářů)

kravčo
Člen | 721
+
0
-

:)

Recursor : Nemyslím si že také slovo reálne existuje, Filter filtruje, Mapper mapuje, ale čo robí Recursor? Naozaj nie je lepšie RecursiveIterator? (áno, volá sa tak interface a v porovnaní s RecursiveIteratorIterator by to malo byť niečo o úroveň nižšie… ale…)

PhpFileStorage : Toto mi len nesedí. Pôvodne som navrhoval presunúť ho do Nette\Caching\Storages, ale už chápem, že tam nepatrí. Možno IncludeStorage?

OutputHelper : Kvôli getCache('Nette.Template.Cache') podľa mňa nepatrí ku všeobecnému kešovaniu ale naspäť do Nette\Templating\CachingHelper (alternatívne prepísaný bez závislosti tam kde je)

David Grudl
Nette Core | 8221
+
0
-

Slovo Recursor je nejspíš originál. Jde o iterátor, který z klasického iterátoru dělá rekurzivní iterátor, ačkoliv sám o sobě rekurzivní není. Takový prostředník. Jak to říct… No rekurzor :-))

OutputHelper upravím, aby si život v Nette\Caching zasloužil.

Ondřej Mirtes
Člen | 1536
+
0
-

Já bych v názvosloví byl konzervativní. V cizím jazyce si dovolíme úlet, protože pro něj nemáme takový cit. Jakmile to uvidí nějaký rodilý mluvčí, bude se škrábat na hlavě, co to ti Češi zase v angličtině vymýšlejí za slova.

hrach
Člen | 1838
+
0
-

Take se mi nelibi vymysleni vlastnich nazvu zkomolenin.

Honza Marek
Člen | 1664
+
0
-

Nelze než souhlasit.

David Grudl
Nette Core | 8221
+
0
-

Obával jsem se, jaké to bude ribejznout všech cca 20 větví, co tu mám, a zas tak strašné to nebylo.

Kdyby to trvalo o něco déle, třeba už bych se konečně naučil, co je při ribejzování „their“ a co „mine“ :-) Máte na to nějakou pomůcku?

jasir
Člen | 746
+
0
-

Přesně tohle mě taky furt mate :) Beru to takhle – když rebasuju větev „feature“ na „master“, provede se nejprve jakoby checkout „master“ a na ni se aplikují komity z větve „feature“. Protože pro tu chvíli je master checkoutlá, je to „mine“ a to co na ní leze je „their“…

A nebo je to obráceně? :D

Editoval jasir (19. 4. 2011 19:15)

jasir
Člen | 746
+
0
-

V tools/Code-Migration/compatibility-aliases.php chybí alias

class_alias('Nette\Diagnostics\Helpers', 'Nette\DebugHelpers');
David Grudl
Nette Core | 8221
+
0
-

Jen bacha na to, class_alias není 100% spolehlivý. Kdyžtak zahlasujte.

David Grudl
Nette Core | 8221
+
0
-

Ondřej Mirtes napsal(a):

BTW: Proč Nette\Utils\Json, ale Nette\StringUtils (ve složce common) ?

Nakonec jsem z toho udělal Nette\Utils\Strings & Nette\Utils\Arrays (stálo to hodně vnitřního přemáhání) a dnes jsem zjistil, že to není komitnuté. Tož snad nebude ještě tak zle to upravit dodatečně.

David Grudl
Nette Core | 8221
+
0
-

jasir napsal(a):

A nebo je to obráceně? :D

Už jsem na to přišel: Master je Mine :-)