Premiera PHP 5.4. Zmiany warte twojej uwagi

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: 12
Im więcej rozwiązań jednego problemu, tym język staje się bogatszy. Nie jest powiedziane, że trzeba tego na siłę używać.
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]