Ewolucja PHP 5 - w skrócie
- nowy model OOP,
- brak kompatybilności wstecznej z wersją 4,
- 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(),
- wprowadzono klasy DateTime i DateTimeZone,
- nowy error mode E_RECOVERABLE_ERROR,
- JSON extension dodane jako domyślne,
- Input filtering extension dodane jako domyślne,
- 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(),
- 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,
- 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) {...},
- 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 =**
Brak komentarzy:
Prześlij komentarz