PHP 5.3 zostało wydane. Wersja była długo oczekiwana z uwagi na wiele usprawnień, nowych funkcjonalności i poprawionych błędów. PHP 5.3 to prawie 6, tylko bez wsparcia dla Unicode. Oto lista rzeczy, na które szczególnie czekałem lub wydały mi się interesujące.
Opcjonalny odśmiecacz pamięci
Do tej pory PHP cierpiało na wycieki pamięci przy okazji występowania cyklicznych referencji. Problem został bardzo dobrze opisany w artykule Dericka Rethansa w Collecting Garbage: PHP's Take on Variables _(opublikowanym w kwietniowym numerze php|architect). W PHP 5.3 dostępna jest rodzina funkcji odśmiecacza pamięci (gc*), które pozwalają nam lepiej ją kontrolować.
Lepsza wydajność
Informacja o nowym wydaniu wspomina o "ukrytej, polepszonej wydajności". Nie ujawniono więcej szczegółów, jednak o tych sprawach zawsze jest dobrze usłyszeć ;)
Przestrzenie nazw
Przestrzenie nazw w PHP zostały zaprojektowane do rozwiązania dwóch problemów: unikania konfliktów nazw i polepszenia czytelności. Konflikty występują głównie tam gdzie nasz kod spotyka się z zewnętrznymi bibliotekami. Czasem zdaża się, że nazwy klas czy funkcji powtarzają się. Przestrzenie nazw pomagają unikać takich przypadków i dodatkowo, pośrednio poprawiają czytelność kodu. Umieszczając definicje klas w różnych przestrzeniach, nie musimy już nadawać im długich, unikalnych nazw.
Potrójny operator
Od teraz możliwe jest pominięcie środkowej części operatora potrójnego, stanowiącego skrót dla warunku if. Zamiast pisać:
echo $test ? $test : 'brak';
możemy użyć skrótu:
echo $test ?: 'brak';
Operator szczególnie przyda się w plikach widoku, gdzie uczyni instrukcje krótszymi i bardziej czytelnymi.
Funkcje Lambda i domknięcia
Domknięcia, znane także jako funkcje anonimowe, pozwalają na deklarowanie funkcji bez określonej nazwy. Ich głównym przeznaczeniem jest "użyj i zapomnij", dlatego szczególnie sprawdzają się jako parametry typu callback.
$values = array_map(
function ($value) {
return strtoupper($value)
},
array('a', 'b', 'c')
);
Wymyślono już wiele przykładów zastosowania tych funkcji i niektóre wyglądają naprawdę zniechęcająco. Oddane w niepowołane ręce mogą uczynić wiele szkód. Jak każde potężne narzędzie, powinno być używane z rozwagą.
goto
Goto wywołało kontrowersyjne dyskusje jeszcze przed wydaniem PHP 5.3. W jakim celu dodano do języka instrukcję znienawidzoną w niemal całym programistycznym świecie?
Rozszeżenie phar
Rozszeżenie phar udostępnia ciekawą funkcjonalność, zbliżoną do znanych z javy plików JAR. Pozwala na spakowanie całej aplikacji do jednego pliku phar (PHP Archive - Archiwum PHP). Z założenia ma ułatwić proces dystrybucji pakietów.
Co dalej?
Migracja! Jest już dostępny przewodnik do migracji. Najwyższy czas go przeczytać i poznać zmiany w stosunku do wersji 5.2. Występują pewne niekompatybilności, ale koniec końców nie jest to główne wydanie i migracja powinna pójść dość gładko. Jeśli używacie gotowych bibliotek czy frameworków, najlepiej poczekać na wydania kompatybilne z PHP 5.3.