Premiera PHP 5.4. Zmiany warte twojej uwagi

php54-title.jpg

Po spektakularnych zapowiedziach PHP6, a następnie hucznym upadku całej koncepcji, developerzy PHP postanowili skupić się na rozwijaniu serii 5. W marcu 2012 roku oficjalnie ukazała się stabilna wersja PHP 5.4. Skupiono się na przeczyszczeniu kodu z archaicznych rozwiązań takich jak register_globals, magic_quotes, czy safe_mode. Według zapowiedzi developerów znacznie poprawiono wydajność interpretera (o ok. 20% obniżenie czasu wykonania, oraz zużycia pamięci). Ze zmian wartych uwagi należy jeszcze wspomnieć o zmianie standardowego ustawienia default_charset z ISO-8859-1 na UTF-8. Standardowo poprawiono ogromną liczbę błędów, usprawniono wiele funkcji, których listę (dla ambitnych) można znaleźć na tej stronie: http://php.net/ChangeLog-5.php. W dalszej części artykułu przedstawię krótko, moim zdaniem, najciekawsze nowe możliwości języka PHP.

Skrócona składnia tablic

Bardzo fajne wprowadzenie skróconej składni. Możemy definiować naszą tablice w stary sposób:

$numbers = array('one','two','three');

Ale od wersji 5.4 możemy to zrobić tak:

$numbers = ['one','two','three'];

$numbers = ['one' => 1, 'two' => 2, 'three' => 3];

Array Dereferencing

Kolejna rewelacyjna możliwość PHP w tej wersji to możliwość łatwiejszego dostępu do elementów tablicy, jeżeli jest ona zwracana przez funkcje. Posłużę się przykładem żywcem z dokumentacji, gdyż prezentuje idealnie o co w tej nowości chodzi

function getArray() {
return array(1, 2, 3);
}

// w PHP 5.4
$secondElement = getArray()[1];

// wcześniejsze wersje
$tmp = getArray();
$secondElement = $tmp[1];

Widać wyraźnie, iż wcześniej musieliśmy zbędnie tworzyć tymczasową zmienną ($tmp), aby dostać się do konkretnych wartości zwracanych przez daną funkcje.

Traits

Wprowadzeniu Traitsów towarzyszyło trochę kontrowersji. Dla niektóry jest to wprowadzenie czegoś na kształt wielokrotnego dziedziczenia, powszechnie znienawidzonego przez programistów C++. Ja wole to traktować jak kolejne narzędzie, które może ułatwić moją prace. Najprościej ujmując Traitsy to zestawy metod, które możemy wielokrotnie wykorzystać w niezależnych klasach. Ponownie posłużę się prostym przykładem z dokumentacji:

trait Hello {
public function sayHello() {
echo 'Hello ';
}
}

trait World {
public function sayWorld() {
echo ' World';
}
}

class MyHelloWorld {
use Hello, World;

public function sayExclamationMark() {
echo '!';
}
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark(); // wynik tego zestawu funkcji to: Hello World!

Przed aktywnym wykorzystaniem Traitsów polecam dokładnie zapoznać się z dokumentacją, gdyż są one już dosyć skomplikowaną funkcjonalnością, która wymaga odrobiny praktyki.

Pomniejsze zmiany

Wprowadzono ciekawą składnie dostępności do elementów klasy:

(new Klasa)->metoda();

Skrócona składnia dla PHP jest na stałe włączona. To znaczy, że z tej składni:

<?=$zmienna?>

będziemy mogli już zawsze korzystać niezależnie od ustawień short_open_tag. Wprowadzono także obsługę $this w funkcjach anonimowych, a także dodano obsługę binarnego formatu danych (np. 0b001001101)

DyskusjaKomentarze: 5

  • HerrLukas 21 kwiecień 2012 17:44
    Traits to faktycznie dobry pomysł. Nie są trudne, zresztą to tylko inne rozwiązanie problemów.

    Im więcej rozwiązań jednego problemu, tym język staje się bogatszy. Nie jest powiedziane, że trzeba tego na siłę używać.
  • Marcin 15 listopad 2016 01:26
    No i z wielką ciekawością można przejrzeć takie archiwalne wpisy. Te cztery lata od publikacji arta wydają się szmatem czasu. W tym czasie poznałem php ;)
  • Marcin 05 grudzień 2016 03:00
    .
  • Olek 23 lipiec 2017 15:39
    Pomyśleć że już mamy wersję 7
  • Iza 29 lipiec 2017 23:53
    Co z tego że jest wersja 7 skoro większość dalej korzysta i będzie korzystać z 5.x

Dodaj komentarz Komentarze są moderowane, a przy linkach używane jest rel="nofollow". Prosimy o nie reklamowanie i nie spamowanie w komentarzach.
Linki tworzone za pomocą tagu [url] np: [url=www.xyz.pl]xyz[/url]
Źródła za pomoc tagu [code] z wskazaniem języka np. [code=php] echo [/code]

Copyright © 2017 Webnote

Projekt i wykonanie: Xelos

Dodaj link