#1 23. 1. 2010 3:07

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 4226
Web

[2010–01–23] Vyšla stabilní verze 0.9.3

Po dvou měsících je tu verze 0.9.3. Přináší poměrně dost novinek a opravuje chybičky.

  • vylepšení jazyka o globální funkci callback() a Nette\Callback pro čitelnější zápis a volání callbacků
  • zásadního zrychlení dosáhla třída RobotLoader
  • opraven bug přehazující pořadí parametrů v URI
  • vylepšený RoutingDebugger zobrazuje více informací
  • přidána třída DateTime53 opravující zmršený DateTime v PHP 5.2 (podpora serializace & unix timestamp)
  • metoda createComponent() může vracet instanci
  • sjednoceno chování všech funkcí ve frameworku, kterým se jako parameter předává čas. Ten může být zadán buď jako objekt DateTime, řetězec ve formátu '+ 14 days', jako relativní počet sekund nebo jako UNIX timestamp.
  • přidána třída Nette\Web\HttpContext
  • přidány funkce String::padLeft() a String::padRight() (obdoba str_pad pro UTF-8)
  • deprecated: Uri::setPass() a getPass() nahrazuje Uri::setPassword() and getPassword()
  • deprecated: HttpResponse::expire() nahrazuje HttpResponse::setExpiration()
  • deprecated: Nette\Object::getClass() (důvodem je příliš obecný název, lze nahradit za $obj->reflection->name)
  • odstraněny třídy Nette\Loaders\SimpleLoader, Nette\Config\ConfigAdapterXml, Nette\Forms\RepeaterControl

Formuláře

  • InstantClientScript: formuláře generují zgruntu nový validační JavaScriptový kód. Ten by měl být lépe přizpůsobitelný (např. pro live validation) a je nezávislý na HTML ID. V této oblasti bude vývoj pokračovat, nicméně nové chování by mělo být stabilní.
  • HttpUploadedFile: příkaz move() řeší problematiku přístupových práv, umí vytvořit adresář a lze jej použít i pro více přesunů.
  • Html: vylepšeno chování metod getHtml() a getText(), takže objekty Html lze bez problémů používat v labelech apod.
  • deprecated: Form::processHttpRequest() bylo přejmenováno na Form::fireEvents()

Debug

  • globální funkce dump() jako (nejen) zkratka pro Nette\Debug::dump()
  • Debug::enable() lze předat výčet IP adres
  • kvůli šetření místem nyní Debug nevytváří HTML logy pro opakující se chyby (zvažuju ukládat soubory komprimované)
  • opraveny nedostatky logování chyb na některých hostinzích

Šablony

  • isFirst() a isLast() podporuje renderování mřížek
  • v šablonách lze psát <?xml ... ?> bez kliček kvůli PHP parseru
  • Makro {debugbreak} podporuje XDebug
  • deprecated: LatteFilter::invoke potažmo CurlyBracketsFilter::invoke (zpravidla by mělo stačit inicializaci filtru odstranit)

Image

  • metoda resize() se zápornými argumenty zrcadlí obrázek (Image i ImageMagick)
  • metoda calculateSize() je nyní statická (BC break!)

Nette\Reflection

Asi nejvýraznější novinkou je nový soubor tříd Nette\Reflection, které sjednocují a rozšiřují možnosti meta-programování. Sem byla přesunuta podpora anotací a zpracování extension method. Řekl bych, že tohle bude příští velká věc, nicméně tuto oblast čeká ještě velký vývoj.

Cache a session

Co ve verzi 0.9.3 není?

Ve verzi 0.9.3 nejsou vývojové záležitosti jako tzv. nové snippety, nezměnila se třída Identity a Presenter používá starou adresářovou strukturu a má stále aktivní přepínače $oldLayoutMode a $oldModuleMode. Zmíněné novinky najdete až ve vývojové větvi 1.0-dev.

Kromě uvedených deprecated metod by se žádná nekompatibilní změna objevit neměla, takže upgrade na 0.9.3 je doporučený.

Offline

 

#2 23. 1. 2010 10:12

Vyki
Nette guru
Místo: Liberec & Plzeň
Registrovaný: 12. 7. 2009
Příspěvky: 253

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

David Grudl napsal(a):

Přešel jsem na PHP 5.3, kde je již nativně sqlite3. Bylo by možné přidat podporu i pro sqlite3, když už má být framework pokrokový a plně použitelný na PHP 5.3 serveru?

Editoval Vyki (23. 1. 2010 10:15)

Offline

 

#3 23. 1. 2010 12:13

mcmatak
Člen
Registrovaný: 17. 7. 2009
Příspěvky: 167

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Object::getClass() is deprecated

proč??? jako je mi to jedno můžu všude přepsat get_called_class nahrazený to mám v nějakým IDE asi rychle …

Offline

 

#4 23. 1. 2010 12:38

Panda
Nette guru
Místo: Děčín 32
Registrovaný: 4. 7. 2008
Příspěvky: 463

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Místo Object::getClass() by se mělo používat Object::getReflection()->getName(), kam to patří asi víc. get_called_class() nepoužívej, je až v PHP 5.3 a slouží pro potřeby Late Static Bindings.


Pomůžeš-li jednomu člověku, pomůžeš tím celému světu.
– Talmud

Offline

 

#5 23. 1. 2010 13:09

pekelnik
Člen
Místo: Praha
Registrovaný: 14. 2. 2009
Příspěvky: 162

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Především nemůžeš v žádné třídě mít „property“ class.

Offline

 

#6 23. 1. 2010 14:56

Honza Marek
Moderator
Místo: Kladno
Registrovaný: 31. 3. 2007
Příspěvky: 1290
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Ano, vyžaduju metodu $object->getClass()!

Offline

 

#7 23. 1. 2010 15:05

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 4226
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Problém getClass() je v jejím poměrně obecném názvu, takže pokud zachovat, tak jako getClassName().

Stejný výsledek vrací i getReflection()->getName(), což lze nyní zapsat přes reflection->name, samozřejmě je to o něco pomalejší, ale kupodivu nijak dramaticky.

Sonduju hlavně odezvu :)

Offline

 

#8 23. 1. 2010 15:17

Honza Marek
Moderator
Místo: Kladno
Registrovaný: 31. 3. 2007
Příspěvky: 1290
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Ještě nedávno bylo getClass vydáváno za jednu z hlavních killer feature, že to jako dělá z php kulturní jazyk a že getClass je i v jiných jazycích :)

Offline

 

#9 23. 1. 2010 15:19

redhead
Nette guru
Registrovaný: 2. 5. 2009
Příspěvky: 749

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Jsem pro zachování

Offline

 

#10 23. 1. 2010 17:22

Inza
Nette guru
Místo: Praha
Registrovaný: 8. 7. 2008
Příspěvky: 352
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Zachovat getClass! – a zápis $foo->class mi připadá srozumitelný a jednoznačný dostatečně! – BTW jiné jazyky to mají také tak! Jako v nejhorším přejmenovat na className, ale rozhodně nechat!

Offline

 

#11 23. 1. 2010 17:31

Honza Kuchař
Moderator
Místo: Brno
Registrovaný: 12. 8. 2007
Příspěvky: 1330
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

I přes to, že to budu muset přepsat, tak jsem pro přejmenování na getClassName(). Přijde mi to jednoznačně logičtejší.

//EDIT: překlep

Editoval honzakuchar (23. 1. 2010 17:32)

Offline

 

#12 23. 1. 2010 18:08

Jan Tvrdík
Nette guru
Místo: Prostějov
Registrovaný: 13. 4. 2008
Příspěvky: 629
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

getClass se mi díky své obecnosti a nelogičnosti nikdy nelíbilo. getClassName je v tomto směru o hodně lepší. Nebude mi vadit, když nebude k dispozici ani jedno.

Offline

 

#13 23. 1. 2010 18:53

Honza Marek
Moderator
Místo: Kladno
Registrovaný: 31. 3. 2007
Příspěvky: 1290
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Existuje nějaký jazyk, kde třída Object má getodu getClassName?

Offline

 

#14 23. 1. 2010 19:46

pekelnik
Člen
Místo: Praha
Registrovaný: 14. 2. 2009
Příspěvky: 162

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Jan Tvrdík napsal(a):

getClass se mi díky své obecnosti a nelogičnosti nikdy nelíbilo. getClassName je v tomto směru o hodně lepší. Nebude mi vadit, když nebude k dispozici ani jedno.

+1

Hlavní je, že je tato funkčnost plně dostupná jako $obj->reflection->name;

Editoval pekelnik (23. 1. 2010 19:48)

Offline

 

#15 23. 1. 2010 19:50

Proki
Člen
Místo: Pardubice
Registrovaný: 20. 2. 2009
Příspěvky: 40

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Jsem pro jednoznačné zrušení… Nevím jak v ostatních jazycích ale například v .NET Frameworku se ke jménu třídy dostává také přes reflexi jako obj.getType().Name;

EDIT: tak pro zajímavost jsem se podíval na to, jak je to dělané v Javě. Tam se k názvu třídy dostaneme přes obj.getClass().getName();

jak je tedy zřejmé, tak v moderních objektových jazycích neposkytuje název třídy přímo instance objektu, ale získává se spolu s dalšími informacemi reflexí…

Editoval Proki (23. 1. 2010 20:03)

Offline

 

#16 23. 1. 2010 20:34

Honza Marek
Moderator
Místo: Kladno
Registrovaný: 31. 3. 2007
Příspěvky: 1290
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

pekelnik: Hlavně je ta funkčnost dostupná přes get_class($object). Holt si budu muset projít zdrojáky, kde mám všude $object->getClass() a přepsat to :-/

Offline

 

#17 23. 1. 2010 21:22

Honza Kuchař
Moderator
Místo: Brno
Registrovaný: 12. 8. 2007
Příspěvky: 1330
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Pokud nebudu myslet na ty co používají třídu Object bez zbytku Nette, tak mi zrušení této metody v zásadě taky nijak nevadí.

Offline

 

#18 23. 1. 2010 22:22

pekelnik
Člen
Místo: Praha
Registrovaný: 14. 2. 2009
Příspěvky: 162

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Honza Marek napsal(a):

pekelnik: Hlavně je ta funkčnost dostupná přes get_class($object). Holt si budu muset projít zdrojáky, kde mám všude $object->getClass() a přepsat to :-/

Ber to tak že u verze 0.9.3 se s tím musí počítat ;)

A jsou to všechno změny k lepšímu a čistšímu kódu.

Offline

 

#19 24. 1. 2010 8:14

gmvasek
Nette guru
Místo: Brno
Registrovaný: 19. 3. 2009
Příspěvky: 283
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Zaskočilo mě deprecated LatteFilter::invoke(), ale jinak byl přechod bezproblémový.

Offline

 

#20 24. 1. 2010 21:14

jtousek
Člen
Registrovaný: 17. 11. 2009
Příspěvky: 74
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Zdravím,

mohu se zeptat, proč došlo k odstranění třídy SimpleLoader? Používal jsem ji neboť RobotLoader mi příliš nevyhovuje. Navíc dodržuju strukturu jmenných prostor a tříd stejnou jako strukturu adresářů a souborů s třídami takže použití SimpleLoaderu bylo přirozené.

Offline

 

#21 24. 1. 2010 23:28

HosipLan
Člen
Místo: Pálava
Registrovaný: 1. 6. 2009
Příspěvky: 132
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

jtousek: vždy můžeš použít třídu ze starší revize a hodit si ji do svých knihoven :)

Editoval HosipLan (24. 1. 2010 23:35)


Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni

Offline

 

#22 25. 1. 2010 0:10

jtousek
Člen
Registrovaný: 17. 11. 2009
Příspěvky: 74
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

HosipLan: To jsem samozřejmě udělal, ale proč ta třída byla odstraněna z frameworku samotného?

Offline

 

#23 25. 1. 2010 1:02

Honza Marek
Moderator
Místo: Kladno
Registrovaný: 31. 3. 2007
Příspěvky: 1290
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

jtousek:
SimpleLoader byla třída, ve které byl ručně napsaný seznam všech tříd frameworku a nešlo s ním načítat nic jiného. Takže jsi používal SimpleLoader + ruční require na vlastní třídy? Presentery se myslim načítají jinak, na to by to nemělo vliv. Pokud se ti vlastní třídy načítaly samy, zřejmě jsi používal RobotLoader aniž bys o tom věděl.

HopsiLan:
Zrovna tahle třída asi použít ze starší verze frameworku nepůjde. Stačí přidání nebo přesun třídy a framework se rozbije.

Offline

 

#24 25. 1. 2010 1:19

kravčo
Moderator
Místo: Bratislava
Registrovaný: 15. 6. 2008
Příspěvky: 565

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Honza Marek napsal(a):

jtousek:
SimpleLoader byla třída, ve které byl ručně napsaný seznam všech tříd frameworku a nešlo s ním načítat nic jiného. Takže jsi používal SimpleLoader + ruční require na vlastní třídy? Presentery se myslim načítají jinak, na to by to nemělo vliv. Pokud se ti vlastní třídy načítaly samy, zřejmě jsi používal RobotLoader aniž bys o tom věděl.

HopsiLan:
Zrovna tahle třída asi použít ze starší verze frameworku nepůjde. Stačí přidání nebo přesun třídy a framework se rozbije.

To, o čom píšeš je NetteLoader. SimpleLoader slúži(l) na načítanie tried podľa mennej konvencie trieda → súbor, podobne ako tomu je v Zend Frameworku. Čiže triedu \My\SuperDuper\MegaClass by hľadal v súbore My/SuperDuper/MegaClass.php.

Offline

 

#25 25. 1. 2010 1:24

Honza Marek
Moderator
Místo: Kladno
Registrovaný: 31. 3. 2007
Příspěvky: 1290
Web

Re: [2010–01–23] Vyšla stabilní verze 0.9.3

Tak to se omlouvám.

Offline

 

Zápatí