PHP 5.3

Podziel się z innymi!

    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!”](http://www.webinside.pl/news/6090) lub dzienników zyx-owych [PHP 5.3.0 wydane](http://www.zyxist.com/pokaz.php/php_53_wydane). Z kolei zaglądając na stronę [PHP 5.3.0 Release Announcement](http://php.net/releases/5_3_0.php) 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](http://pl.php.net/migration53). Warto też zajrzeć do artykułów na wortalu php.pl [Co nowego w php 5.3 – część 1](http://wortal.php.pl/wortal/artykuly/php/podstawy/co_nowego_w_php_5_3_czesc_1) i [Co nowego w php 5.3 – część 2](http://wortal.php.pl/wortal/artykuly/php/podstawy/co_nowego_w_php_5_3_czesc_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](http://pl2.php.net/lsb) 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](http://pl.php.net/manual/pl/book.fileinfo.php) oraz [INTL](http://pl.php.net/manual/pl/book.intl.php). 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 😀

    Podziel się z innymi!

      2 Comments

      1. bigZbig Post author

        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.

      Dodaj komentarz

      Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *