czwartek, 30 maja 2019

Ewolucja PHP 5 - w skrócie


  • 5.0 (2004)

    • nowy model OOP,
    • brak kompatybilności wstecznej z wersją 4,

  • 5.1 (2005)

    • PDO extension dodane jako domyślne,
    • dodano funkcje do operowania na tablicach: 
      • array_diff_key()
      • array_diff_ukey()
      • array_intersect_key() and 
      • array_intersect_ukey(),

  • 5.2 (2006)

    • wprowadzono klasy DateTime i DateTimeZone,
    • nowy error mode E_RECOVERABLE_ERROR,
    • JSON extension dodane jako domyślne, 
    • Input filtering extension dodane jako domyślne,

  • 5.3 (2009)

    • namespace czyli przestrzenie nazw, __autoload(),
    • Late State Binding,
    • funkcje anonimowe i obiekty Closure,
    • Short Tenary Operator ?:,
    • NOWDOC,
    • HEREDOC umożliwia inicjalizowanie statycznych zmiennych, pól klasy oraz stałych klasy, 
    • stałe mogą być deklarowane poza klasami za pomocą słowa kluczowego const,
    • dynamiczny dostęp do metod statycznych,
    • nowe metody magiczne __callStatic(), __invoke(),
    • nowy error mode E_STRICT raportujący o funkcjonalnościach które w przyszłych wersjach mogą być oznaczone jako deprecated,
    • SPL'owa klasa DirectoryIterator od teraz implementuje ArrayAccess,
    • dwie nowe funkcje do operowania na tablicach: array_replace() & array_replace_recursive(),

  • 5.4 (2012)

    • skrócona składnia tablic. Zamiast deklarowania jej w taki sposób array() można zamiennie stosować [],
    • Traits,
    • Function Array Dereferencing. Umożliwia odwołanie się do indeksów tablicy bezpośrednio na funkcji/metodzie zwracającej array np. foo()[0],
    • echo tag <?= domyślnie zawsze dostępny, chyba że zadeklarujesz inaczej w php.ini short_open_tag,
    • Natychmiastowe odwoływanie się do metod i pól instancjonowanej klasy umieszczając ten proces w nawiasach np. (new MyExampleClass())->getName(),
    • możliwość wykorzystania $this w Closure
    • stosowanie Type Hint w callable
    • składnia Class::{expr}(),
    • blok switch jako argument może przyjmować array,

  • 5.5 (2013)

    • generatory,
    • słowo kluczowe finally dla bloku try catch,
    • Literal Dereferencing czyli odwoływanie się do poszczególnych indeksów tablic i stringów w następujący sposób: ['a','b','c'][0] albo "hello"[1],
    • password_hash() i password_verify() zastąpiły wcześniej wykorzystywaną do tego celu funkcje crypt(). Wykorzystuje domyślnie algorytm bcrypt,
    • konstrukt językowy empty() można wykorzystywać teraz na funkcjach, odwołaniach do metod obiektów czy wyrażeniach, 
    • pozyskiwanie pełnej nazwy importowanej klasy (fully qualified class name) czyli takiej zawierającej przestrzeń nazw za pośrednictwem słowa kluczowego class poprzedzonego operatorem :: (Paamayim Nekudotayim) w taki sposób MyImportedClass::class. Można to również stosować na importowanych interfejsach,
    • korzystanie z konstruktu list() jako aktualnie iterowanego elementu tablicy (będącego tablicą) zamiast klasycznego $key => $item np.            foreach($array as list($item1, $item2)) {...} w przypadku korzystania z tablic wielowymiarowych,
    • deklarowany array w foreach po którym się iterujemy i ustawiamy referencje na kluczu czy wartości nie wyrzuca już błędu "Cannot create references to elements of a temporary array expression". Np. foreach([1, 2, 3, 4] as $key => &$value) {...},

  • 5.6 (2014)

    • wprowadzono możliwość deklarowania wyrażeń skalarnych w constach,
    • zmniejszenie ilości pamięci (2-3 krotnie) tablicy POST,
    • Variadic Functions. Uproszczono korzystanie z nieokreślonej ilości parametrów w funkcjach, poprzez wprowadzenie do składni Variadic Type Hint na przykład ...$numbers, jest to ciekawa alternatywa dla func_get_params() - Variadic na polski to 'ze zmienną liczbą argumentów',
    • osadzanie funkcji i stałych (const) w namespace'ach i importowanie ich w innych przestrzeniach nazw za pomocą słowa kluczowego use dokładnie tak jak robi się to z klasami, 
    • nowe operatory arytmetyczne ** oraz =**
     Źródła 

Brak komentarzy:

Prześlij komentarz