23 komentářů k článku Jaké novinky přinese PHP 7:

  1. Martin

    Tesim sa na ?? a samozrejme vykon. Tiez uvazujem o typovej kontrole… Je to v podstate ciastocny unit test. :)

    Asi je najvyssi cas nastudovat Exceptions… Furt neviem naco je to dobre, ale asi sa tomu zachvilu nevyhnem.

    1. Martin

      Re:
      Ked tak uvazujem o typovej kontrole, vacsina funkcii tak ci tak vracia pole… Takze nebude velmi co typovat.

    2. Oldřich Vetešník

      Re:
      Těžko říct, co děláte, ale výjimky se hodí když píšete třeba vlastní mini-wrapper na nějakou HTTP API. :-)

      1. Martin

        Re:
        Tak trebars mam svoj mini framework… Stara sa o MySQL spojenie, error handling a par podobnych figlov. Stale mi vsak nezaplo, co ziskam s Exceptions oproti tomuto. Nemam dovod Exceptions nepouzivat, len nevidim ziadnu vyhodu.

        set_error_handler('dev::errorHandler', -1);
        
        1. Oldřich Vetešník

          Re:
          Tak třeba když mám background worker, který zpracovává nějaký joby, tak výjimky využiju proto, abych v hlavní perform metodě odchytnul jeden typ chyb, pro které má smysl job opakovat (třeba network timeout error) a zbytek zalogoval s tím, že opakovat to nemá smysl (not found, SQL error, …).

          Je to jen jedna z několika možností, jak něco zastavit, když nemá smysl v tom pokračovat a zároveň dát možnost někomu s tím nějak naložit. Když bych místo toho vyhodit fatal error, můj worker by to asi nerozdejchal. :-)

  2. podhy

    Typová kontrola a návratové typy jsou opravdu užitečné. Jediné co my ještě chybí je něco na způsob šablon aby když mi funkce bude vracet pole objektů abych hned věděl o jaké typy se jedná. Prostě něco co má Hack :-)

    1. podhy

      Re:
      PS: docela mi zde chybí zmínka o AST, protože to umožní konečně PHP vcelku normálně rozšiřovat

      1. JanTvrdik

        Re:
        AST je implementační detail. Na koncové uživatele to nemá zatím vůbec žádný vliv. Teprve až bude API pro práci s AST dostupné v userlandu, tak to začne být zajímavé.

  3. Tomáš Kapler

    kompatibilita?
    Takže chápu to dobře, že by v zásadě každý dobře psaný kód měl od počátku fungovat a neměli bychom se dočkat nějakých problémů? Tj. mohu vzít třeba nějaký svůj WP web resp. jeho hosting a upgradovat na PHP7 (tedy až bude ostrá verze)?

      1. Martin HujerAutor příspěvku

        Re: kompatibilita?
        Na jednu stranu je tam spoustu odebraných věcí, na druhou stranu nebylo tolik práce fixnout testy ZF1 (ano, toho starého, běžícího i na PHP 5.2), aby procházely i na PHP 7 (teď padá jen jeden podezřelý test pro FirePHP, který nějak magicky parsuje debug_backtrace()).

        Zkoušel jsem spustit Shopio (které už taky vyvíjíme dost dlouho, původně běželo na PHP 5.2) a běželo bez problémů.

  4. Oldřich Vetešník

    Změny zní super, klobouk dolů. Docela by mě zajímalo, jak rychle se firmy aklimatizují, přece jen není švanda upgradnout všechna jejich řešení. :-)

    1. Oldis

      Re:
      Tak to sem posledně vyřešil tak že sem napsal hostingu at mi vrati starsi verzi php, protoze za to, ze oni se rozmislely a po peti letech updatly verzi php, mi ten, komu ten web patri, za upravu nic nezaplati. proslo :)

  5. JanTvrdik

    Řazení pomocí uasort v PHP 5
    Ten uvedený příklad je takový nešikovný, protože už v PHP 5 bylo možné to zapsat jako

    uasort($data, function ($a, $b) {
        return $a['price'] - $b['price'];
    });
    

    což je ještě kratší než zápis s <=> operátorem. Rozdíl je v tom, že operátor <=> je jednak čitelnější a především funguje nejen pro čísla, ale i pro řetězce (dříve bylo potřeba použít strcmp) a pro pole (které dříve nebylo možné jednoduše porovnat vůbec). Ty pole jsou obzvlášť důležité, protože umožní porovnat podle více parametrů zároveň, např:

    // porovnání primárně podle města a sekundárně podle jména
    return [$a->city, $a->name] <=> [$b->city, $b->name];
    
    1. Martin HujerAutor příspěvku

      Re: Řazení pomocí uasort v PHP 5
      Díky za doplnění toho porovnávání řetězců a polí.

      Ta finta s odečítáním funguje jen pokud bude porovnávaná věc int, jinak to může dávat nesprávné výsledky (tím, že výsledek je automaticky přetypovaný na int) – viz http://3v4l.org/YTYP8 (v prvním případě to seřadí špatně)

  6. Martin Všetička

    Strict data types vs. weak data types

    Kontrola datových typů není aktivní automaticky, ale je nutné na
    začátku souboru uvést: declare(strict_types = 1);

    To neni pravda. Timto se jen vynuti striktni kontrola datovych typu. Pokud se tato direktiva neuvede nebo hodnota bude nula, tak se pouzije weak type-checking mode.

  7. Lukáš Brzák

    Super
    Po dlouhé době krok správným směrem. Líbí se mi výkon, přepracování Exceptions, nové operátory ?? <=> i kontrola datových typů, kterou jsem povětšinou stejně musel řešit vyhozením vyjímky třeba \InvalidArgumentException … hned se pustím do študýrování a testování :-) Fajn článek, díky!

  8. Instalator

    Instalace PHP7 na Ubuntu Linux systemech (mint, elementaryos, apod.)
    pridame repozitar
    sudo add-apt-repository ppa:ondrej/php-7.0
    aktualizujeme repozitare
    sudo apt-get update
    a nainstalujeme balicek php7
    sudo apt-get install php7

    vice zde https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0
    plati poucka nikdy takove veci neinstalovat na produkcnim serveru, to je myslim jasne .-)

  9. Instalator

    Re: Instalace PHP7 na Ubuntu Linux systemech (mint, elementaryos, apod.)
    oprava:
    a nainstalujeme balicek php7.0
    sudo apt-get install php7.0

  10. podolinek

    Throwable místo BaseException
    V RFC bylo nakonec BaseException nahrazeno za Throwable, takže pokud chcete odchytit úplně všechno včetně fatalů, tak catch(Throwable $e).

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=15021