Na navigaci | Klávesové zkratky

Translate to English… Ins Deutsche übersetzen…

Jak se opouští PHP 5.3

PHP 5.3 je stále nejpoužívanější verzí PHP. Nicméně jde o verzi nepodporovanou, nevycházejí už ani záplaty na závažné bezpečnostní díry. Podle trendů se zdá, že verze 5.4 by ji mohla vystřídat po prázdninách. Ironií je, že v ten moment i jí skončí podpora.

Jisté je, že v době vydání další verze Nette bude PHP 5.3 dávno passé, tudíž jsem v masteru změnil minimální požadovanou verzi z PHP 5.3.1 na PHP 5.4.4.

Právě tohle setinkové číslo jsem zvolil s ohledem na Debian 7.0 Wheezy.

Opuštění větve 5.3 znamenalo řadu spíš kosmetických změn (DI, Tracy), odstranění drobného počtu workaroundů (magic quotes u Http, Reflection, Utils) a výjimečně i užití nových tříd (Finder nebo Component-Model). Což potvrzuje, že verze PHP 5.3 byla skutečně hodně dobrá.

PHP 5.4 zároveň skýtá nové možnosti, první implementovanou byla žádaná serializace objektu DateTime do JSON. Dále se nabízí možnost nahradit Nette\Object za trait atd.

Na co jsem se ale hodně těšil byla normální syntax pro zápis polí pomocí [] namísto šíleného array(). A také možnost používat v šablonách <?= místo dlouhého <?php echo.

S jejich nasazením v masteru jsem ale váhal, protože by to udělalo z cherry-pickování do starších větví peklo. Nicméně verze Nette 2.1 a od května i 2.2 jsou ve stádiu, kdy se opravují jen závažné chyby, které se v Nette objevují jen zřídkakdy, a v aktuální verzi 2.3 se nové komity objevují jen svátečně, tudíž jsem si řekl, že netřeba to odkládat a všechny repozitáře převedl na hezčí syntax.

(Rebasování větví byl docela oříšek, rozepsal jsem se o tom včera. Takový převod tabulátorů na mezery by musel být hotové peklo.)

Nástroj Code Checker nyní kontroluje, aby se v repozitářích používala výhradně nová syntax a nedocházelo k míchání obou zápisů polí.

Přechod na PHP 5.5 by přinesl taky jednu byť drobnou syntaktickou změnu: konstantu ::class. A mohly by se použít nové funkce v Nette\Utils\Image a případně Nette\Security\Password, typ DateTime by se v typehintech nahradil za DateTimeInterface.

Přechod na PHP 5.6 by přinesl zejména nahrazení většiny func_get_args() & call_user_func_array() za trojtečky (včetně operátoru (expand) v Latte). V pár případech by se dalo využít i konstant obsahujících pole.

A přechod na PHP 7 by byla revoluce.

Komentáře

  1. paranoiq http://www.paranoiq.cz #1

    avatar

    congratulations! :]

    ad „Dále se nabízí možnost nahradit Nette\Object za trait atd.“ – spíš za několik specializovaných trait (př.: https://github.com/…ommon/mixins)

    před rokem | odpovědět
  2. Nomad #2

    Zkracenej zapis poli je super, ale je to jen a pouze kosmeticka zalezitost… Mrzi me, ze se ten cas na prevod nevyuzil spis na neco uzitecnejsiho, jako treba na doplneni dokumentace o novy featury, atd..

  3. David Grudl http://davidgrudl.com #3

    avatar

    #2 Nomade, mně je úplně fuk, co ty děláš se svým časem, jelikož nejsem tak neomalený, abych ti to vyčítal.

    před rokem | odpovědět
  4. iceover #4

    avatar

    Super, moc díky. Dobrá práce.

    před rokem | odpovědět
  5. Nomad #5

    Tak pardon, jen konstatuju, co si já a lidé kolem mě myslí… Nette je super framework, a za ti moc a moc díky, ale když se neustále něco přidává, mění, atd a jedinej způsob, jak zjistit, co že to vlastně přibylo, jak se to asi používá, nebo co se zase změnilo, dá zjistit pouze přes reverse engineering, tak je jasné, že chlubení se několika hodinovou nepodstatnou kosmetickou úpravou, místo dopsání tolik potřebné dokumentace, nevyvolá u všech zrovna pozitivní ohlas…

    PS: Co si děláš se svým časem, je samozřejmě tvoje věc, dokud se tím nezačneš chlubit veřejně…
    PPS: Toho kokota by sis moh pro příště odpustit.

    před rokem | odpovědět | reagoval [6] David Grudl
  6. David Grudl http://davidgrudl.com #6

    avatar

    #5 Nomade, tak ty nebo někdo z lidí kolem tebe přijďte sem https://forum.nette.org/…-dokumentaci

    Dal jsem do toho deset let a teď je to na vás. Bavím se kosmetikou.

    před rokem | odpovědět
  7. Tomáš Markacz http://markacz.com #7

    avatar

    #2 Nomade, Pro mě je čistota a přehlednost kódu důležitější než počet features. V případě Nette a zápisu polí jsou tu tři možnosti jak se k tomu postavit.
    Buď zapisovat pole pořád při starém, což není úplně dobré (starý zápis není prostě tak přehledný jako nový).
    Další možností je začít používat novou syntax, starou nechat, a při průběžném refactoringu nahrazovat starou za novou postupně. Tahle možnost je podle mě nejhorší možná. Nemám rád nekonzistence napříč kódem. Navíc, na některé části se už nejspíš nikdy nesáhne, takže to tam bude hnít napořád.
    No a třetí možnost, která je podle mě nejlepší a pro kterou se David rozhodl, je nahrazení staré sytaxe za novou. Plošné změny v kódu tohoto typu se navíc dělají zřídka kdy, takže toho „promarněného“ :) času v porovnání s ostatním není tolik.

    před rokem | odpovědět
  8. Nomad #8

    „jedinej způsob, jak zjistit, co že to vlastně přibylo, jak se to asi používá, nebo co se zase změnilo, dá zjistit pouze přes reverse engineering“ -
    Tedy máme se snažit zdokumentovat něco, co ani nevíme, jak vlastně funguje?

    No nic, kašlu na to, bav se dál „kosmetikou“, ale pak se nediv, že nemůžeš Nette pořádně dostat mimo hranice.

    před rokem | odpovědět | reagoval [9] David Grudl [10] matej21
  9. David Grudl http://davidgrudl.com #9

    avatar

    #8 Nomade, ve věcech, kterým rozumíš, tj. ve starých featurkách, ti připadá současná dokumentace dokonalá? Pokud ne, udělal jsi pro to něco? Pokud ne, kde bereš drzost kecat do života ostatním?

    ad zahraničí: nedivím se, jsem realista a vím, že Nette v tomto neuspělo a dál to neřeším. Tak jako jsem přestal psát dokumentaci (nepotřebuji ji), opravuji jen bugy, které se mě bezprostředně dotýkají a vyvíjím, jen když něco potřebuji sám, nebo mám chuť (array syntax). Lidem jako ty nic nedlužím a nebudu vám ani dělat poskoka.

    před rokem | odpovědět
  10. matej21 #10

    avatar

    #8 Nomade, ahoj, ve ctvrtek mame dalsi dokumentacni krouzek. tak se muzes stavit. muzes pozvat i sve kamarady. http://srazy.info/…krouzek/5537

    před rokem | odpovědět
  11. Aislinn #11

    Řekněte mi, jaká asi pak bude kvalita té dokumentace, když ji bude psát někdo, kdo to nenaprogramoval? Je úplně absurdní, že to nám ostatním vyčítáte.
    Nějak si neumím představit, když něco v práci naprogramuju, že bych potom zadal úkol kolegovi, aby k tomu napsal dokumentaci – vždyť by toho napsal tak 40%, zatímco já napíšu mnohem víc, protože o tom kódu vím všechno. Kolega se mi potom furt bude na něco ptát a ve výsledku to bude úplně neefektivní.

  12. Filip Procházka https://filip-prochazka.com/ #12

    avatar

    #11 Aislinne, V tom případě můžeš poslat příspěvek https://nette.org/cs/donate a pomoct tím namotivovat ke psaní dokumentace.

    před rokem | odpovědět
  13. Namespace #13

    avatar

    #11 Aislinne, Myslíš, že 100% dokumentace píší autoři kódu? Dokumentaci u opensource může psát každý s například hlubším pochopením API nebo znalostí jazyka a nemusí to být nutně autor. Umíš dobře anglicky? Můžeš překládat dokumentaci do angličtiny. Způsobů je spousta, stačí si vybrat .. když chceš.

    Nejhorší ale je nedělat nic a na všechno nadávat.

    před rokem | odpovědět
  14. David Grudl http://davidgrudl.com #14

    avatar

    Že dokumentaci píše někdo jiný, než kód, je naprosto standardní záležitost. Stačí srovnat commitery do kódu a dokumentace u nejrůznějších open source projektů. Přesvědčte se.

    Důvod je ten, že jen málokdo je zároveň špičkový programátor i mistr slova se schopností věci vysvětlit.

    Nicméně zdá se, že #11 Aislinn píše dobře, tak třeba na dokumentační kroužek dorazí.

    před rokem | odpovědět

Zanechat komentář

Text komentáře
Kontakt

(kvůli gravataru)



*kurzíva* **tučné** "odkaz":http://example.com /--php phpkod(); \--