Może szóstka?

Najpoważniejszym problemem “piątki” okazał się brak pełnej zgodności z PHP 4. Nic zatem dziwnego, że jeszcze dzisiaj na sieciowych serwerach króluje starsza odmiana języka. Fakt ten z pewnością mieli na uwadze deweloperzy, którzy 11 i 12 listopada ubiegłego roku dyskutowali w Paryżu na temat następnej, szóstej wersji PHP.

W spotkaniu wzięli udział m.in. przedstawiciele portalu Yahoo! oraz firm Zend i eZsystems. Najważniejsze ustalenia zostały spisane i udostępnione w postaci obszernego sprawozdania (

patrz:

ramka “Więcej informacji”). Dla potrzeb Czytelników przedstawię najważniejsze punkty tego dokumentu.

Jazda na śmietnik!

Bez rewolucji – tak najkrócej da się skwitować plany dotyczące nowej wersji języka. Jego twórcy wyszli z założenia, że nadszedł czas stabilizacji, i nie planują wprowadzenia tak dużych zmian, jakie pojawiły się w PHP 5. Nie oznacza to, że poprawki będą miały charakter wyłącznie kosmetyczny. Język nadal ewoluuje: zostanie usprawniony i uwolniony od przestarzałych modułów.

Zacznijmy od elementów, które znikną z PHP. W szóstej wersji zabraknie dyrektywy register_globals. Od pewnego czasu była ona zresztą domyślnie wyłączona – korzystanie z register_globals prowadziło często do występowania w skryptach błędów związanych z bezpieczeństwem.

Zlikwidowany zostanie tzw.

safe_mode

. W założeniu miał on się przyczynić do zwiększenia poziomu bezpieczeństwa serwerów, na których uruchamiane są skrypty PHP. Po uaktywnieniu trybu safe_mode można było np. sprawdzić, czy zapisywany na dysku plik ma tego samego właściciela co skrypt, który go utworzył. Niestety, powodowało to poważne ograniczenia, związane choćby z plikami umieszczonymi na serwerze przez użytkownika. Wielu usługodawców rezygnowało ze stosowania safe_mode – okazywał się on nie do zaakceptowania dla niektórych klientów.

W PHP 6 nie będą dostępne magic_quotes, dzięki którym wywoływana jest funkcja addslashes(). Co prawda takie udogodnienie pozwala automatycznie uzupełniać brakujące znaki ukośników w kodzie, ale autorzy aplikacji często sami stosują funkcję addslashes() w swoich skryptach. Dochodzi wówczas do powstania bałaganu – w programie pojawiają się zbędne znaki.

Nie tylko czystki

Na razie mówiliśmy o “odchudzaniu” języka PHP. Pora przyjrzeć się temu, co zostanie doń dodane.

Zmieni się system PECL (PHP Extension Community Library), czyli zestaw dodatków wchodzących w skład w biblioteki PEAR (PHP Extension and Application Repository). Do jądra PHP będą włączone rozszerzenia XML Reader oraz XML Writer, dzięki którym odczytywane i zapisywane są pliki XML. Natomiast w drugą stronę (z jądra PHP do PECL) przeniesione zostanie rozszerzenie ereg, służące do obsługi wyrażeń regularnych. Standardem staną się teraz PCRE – wyrażenia regularne języka Perl.

W jądrze PHP 6 pojawi się rozszerzenie Fileinfo, które udostępnia informacje na temat formatu pliku (MIME-type), jego rozmiaru itp. Rozszerzenie to zostanie wprowadzone z powodu nie najlepszego działania obecnie używanej mime_magicc0.

Skoki i klasy

Jednym z ciekawszych udogodnień oferowanych przez nową wersję PHP będzie instrukcja skoku, podobna do komendy goto znanej z innych języków programowania. Autor skryptu utworzy etykiety w wybranym miejscu kodu, a następnie będzie się do nich odwoływał, pomijając część programu. W PHP 6 skoki są realizowane dzięki instrukcji break, po której należy podać nazwę etykiety.

Nie oczekujmy natomiast wielkich zmian w dziedzinie programowania obiektowego. W aplikacjach będzie można korzystać z przestrzeni nazw (

namespaces

), takich jak w C++ czy Javie. Pozwolą one scalać kilka klas, do których programista odwoła się później za pomocą przedrostków.

Druga nowinka dotyczy zasad używania konstruktorów klas potomnych. Muszą one wywołać konstruktor klasy macierzystej, aby skrypt działał prawidłowo. Obecnie jednak PHP nie oferuje żadnego mechanizmu, który sprawdza, czy konstruktor klasy macierzystej został wywołany. Począwszy od szóstej wersji języka, taką kontrolę da się już przeprowadzić. W efekcie powinny zniknąć problemy z działaniem niechlujnie napisanych programów.

Będzie łatwiej

Już na wstępie wspominałem, że wprowadzone do PHP 6 poprawki kojarzą się w gruncie rzeczy z zabiegami kosmetycznymi. Wydaje się jednak, że taki lifting może skłonić do przesiadki na nową wersję języka wszystkich tych, którzy woleli pozostać przy PHP 4 niż zainstalować piątą edycję pakietu. Najlepiej zapoznać się z nią już teraz. Migracja z “piątki” na “szóstkę” nie powinna stwarzać żadnych problemów, z kłopotami będą musiały się natomiast liczyć osoby korzystające ze starszych aplikacji.