Jak większość programistów PHP od dłuższego czasu śledzę postęp prac nad PHP 6. Tymczasem wydano PHP 5.3 stanowiącą preludium przed wersją szóstą, a umożliwiającą zapozanie się z mającymi nadejść nowościami.
O tym co nowego w PHP 5.3 można się w skrócie dowiedzieć z newsa na webinside.pl „Nowa wersja PHP – 5.3!” lub dzienników zyx-owych PHP 5.3.0 wydane. Z kolei zaglądając na stronę PHP 5.3.0 Release Announcement poznamy szczegóły. Chcąc zapoznać się z przewidywalnymi problemami jakie mogą nas spotkać w procesie migracji do nowszej wersji warto też przeczytać Migrating from PHP 5.2.x to PHP 5.3.x. Warto też zajrzeć do artykułów na wortalu php.pl Co nowego w php 5.3 – część 1 i Co nowego w php 5.3 – część 2, które powstały jeszcze przed premierą.
Oczywiście największym moim zainteresowaniem cieszą się namespaces. Nie wiem w jakim procencie będę ostatecznie wykorzystywał cały potencjał tego nowego mechanizmu jednak już teraz wiem, że szybko zapoznam się z funkcją „class_alias”. Myślę, że podobnie powinni postąpić programiści Kohana PHP, którzy namiętnie nadużywają (a przynajmniej nadużywali) evala w swoim frameworku. Krąży taka anegdota, że funkcja eval w PHP 6 zmieni nazwę na evil
Inną kwestią, która niekiedy mnie irytowała to ograniczenia jakie nałożone były na metody statyczne. Late Static Bindings ułatwi wykorzystywanie metod statycznych w połączeniu z dziedziczeniem i magicznym wywoływaniem. Natomiast nie bardzo na razie rozumiem dlaczego stworzono funkcję „forward_static_call”.
Kolosalne znaczenie przypisuję z kolei faktowi włączenia domyślnie do dystrubucji PHP rozszerzeń FileInfo oraz INTL. Pierwsze z wymienionych umożliwia jakże istotne z punktu widzenia bezpieczeństwa sprawdzenie mimetype pliku. Dotąd też było to możliwe i to na kilka sposobów. Trudność polegała głównie na tym, że funkcje, lub metody umożliwiające detekcję typu pliku dostępne były w dodatkach PECL „FileInfo” lub „Mimetype” (obecnie zdepreconowanego) nie zawsze uwzględnione w konfiguracji PHP zainstalowanej na tym czy tamtym serwerze.
Drugi ze wspomnianych dodatków z kolei stanowi rozbudowane narzędzie do internacjonalizacji, które przynajmniej w założeniu rozwiąże wiele istotnych problemów związanych z tym zagadnieniem.
To mi się podoba
Może to drobiazg, ale parę razy zdarzyło mi się pisanie funkcji „lcfirst”. Może to i banał jednak skoro istnieje funkcja „ucfirst”, powołanie do życia funkcji „lcfirst” wydało mi się jak najbardziej uzasadnione


Nikodem
10 lipca 2009 at 14:36
Kiedy to zdarzyło Ci się potrzebować funkcji lcfirst() :O !?
bigZbig
10 lipca 2009 at 14:56
Chcąc np. wywieść nazwę zmiennej, lub metody z nazwy klasy zapisanej CamelCase-m. Nazwy klas zaczynają się zwykle od wielkiej litery (zależy od przyjętej konwencji), z kolei nazwy zmiennych lub metod od małych. W takich przypadkach zachodzi potrzeba zmiany tylko pierwszej litery.