Dokopałem się właśnie do pewnego wpisu na PeHaPowym Wiki omawiającego status i różne ciekawostki dotyczące PHP6. Można się dowiedzieć fajnych rzeczy… Ale po kolei.

Czego nie ma, a być powinno

Co mi się nie podoba: w “odrzuconych” są takie kwiatki jak add named parameters, czyli parametry nazwane w funkcjach. Jestem dość mocno skażony Pythonem, więc ten wynalazek uważam za świetny pomysł, niestety został odrzucony :(

O ile parametry nazwane to kwestia gustu, i da się to przeżyć, o tyle gorzej że ten sam los spotkał wpis oznaczony jako all fatal errors to become exceptions Chodzi tutaj o zamianę chorego systemu błędów (które potrafią ot tak zatrzymać działanie skryptu i nie pozwalające zrobić z tym faktem niczego) na wyjątki. Dziwna sprawa jak dla mnie, jako że ogólnie PHP5 już ma na tyle zaawansowaną obsługę wyjątków i obiektów w ogólności, że nie powinien to być problem. Tym bardziej, że to ma być zupełnie nowa wersja interpretera (nie podwersja), więc taka zmiana powinna być w pełni akcpetowalna :(

make function names match CS and unify parameter order - o ile zmiana akurat na camel case mnie nie bawi, bo wolę wersję z podkreśleniami, o tyle lepsze to niż obecna ruletka. A już druga część podpunktu (czyli unifikacja kolejności parametrów w funkcjach wbudowanych) to jak dla mnie takie “musiszmieć”, a oni to tak po prostu odrzucają. Porażka :( Co za problem, skoro i tak jest śmietnik, zostawić stare funkcje jako aliasy na nowe, dorzucając errora typu deprecated, i zrobić wreszcie jakiś porządek? :/

add support for <?php="foo" ?> - cóż, szkoda. Pozostanie pisać mi dalej w WordPressie <?php echo "foo"; ?> :) Ale nadmiernie z tego powodu nie rozpaczam :)

Nieco bardziej ruszył mnie punkt dotyczący wielokrotnego dziedziczenia, ale płakał też nie będę. Cóż, tak samo jak z punktem poprzednim, da się żyć bez tego.

Natomiast zupełnie nie rozumiem dlaczego odrzucono pomysł bloku finally (a ‘finally’ block for exception handling, bez którego system wyjątków jest, teges, upośledzony :(

O czym nie chciało im się jeszcze rozmawiać

Jednym z ciekawszych elementów nad którym nie przeprowadzono jeszcze dyskusji, jest dostarczenie globalnej funkcji __call (), wywoływanej w momencie gdy zostanie użyta nieistniejąca funkcja. Coś, czym jest __autoload () dla klas. Fajna sprawa, imho jak najbardziej powinno mieć to miejsce.

Ciekawostką jak dla mnie jest używanie wyrażeń regularnych w bloku switch (). Jeśli przepchną coś takiego, to pójdą w stronę perla, gdzie w wersji 5.10 dodano tenże blok (nazywając go given ()), który wykorzystuje magiczny, specjalnie dla niego stworzony operator ~~. Magiczny dlatego, że sposób jego działania (porównywania) jest zależny od tego jakie operandy są porównywane. Bez specjalnej tabeli (szukaj podpunktu Smart matching in detail) nie podchodź.

Za to dwa inne podpunkty mi się nawet podobają: “ext/pimpmydate”, new date/time features, real OO interface (obiektowe podejście do operowania na datach) i being able to use array() when defining constants (możliwość definiowania stałych jako tablice). Byłoby miło gdyby to zostało wprowadzone :)

Nad czym pracują i co na pewno będzie wykonane

Standardowo - pełne wsparcie dla Unicode. W końcu. Co prawda, podobnie jak porneL nie rozumiem czemu wybór padł akurat na UTF-16, ale lepsze to niż obecne zabawy z niepełnym modułem mb. Trwają jeszcze prace nad pełną implenetacją tego (np. w PDO), ale ważne że będzie ;)

Nie ma już register_globals i safe_mode. Te dwa zabytki, do spółki z magic_quotes są baaaardzo wkurzającymi, i często niebezpiecznymi ustawieniami dotyczącymi PHP. Na szczęście zmiany z tego podpunktu dotyczą także PHP 5.3. Hip hip, hurra! :D

Zostanie wyrzucone z głównego drzewa rozszerzenie ereg, za to pcre zostanie jego stałą częścią bez możliwości wyłączenia.

Do PHP wprowadzono goto. Na razie działa breakowanie do konkretnej etykiety (label), a niedługo dojdzie też goto jako takie… O ile break rozumiem, o tyle goto niespecjalnie.

Podoba mi się wprowadzenie rozwijania tablic do foreach. Wykorzystywałoby się w tym celu funkcję list (), a całość wyglądałaby tak:


$a = array (
  array (1, 2),
  array (3,4)
);
foreach ($a as $k => list ($b, $c)) {
  echo $b .':'. $c;
}

Przestrzenie nazw.

Wbudowane zabezpieczenie przeciwko HTTP Response Splitting (funkcją header () będzie można wysłać tylko jeden nagłówek naraz, czyli wstrzyknięcie “Header1: Value\nHeader2:Value” nie będzie już możliwe).

I co z tego?

Jako podsumowanie napiszę tylko, że wprowadzane zmiany są tak jakby… chaotyczne. Z jednej strony próba wyprowadzenia różnych zaszłości, które strasznie denerwują ludzi nieco bardziej obeznanych z programowaniem. Z drugiej zostawianie rzeczy i śmietnika które denerwują nie mniej. Teoretycznie, wersja piąta jest na tyle dobrą wersją tego języka, że dałoby się z nią przeżyć jeden rok więcej. Dzięki temu można by wprowadzić znacznie więcej zmian które oczyściłyby ten jeden wielki śmietnik, jakim jest PHP.


Liczba komentarzy: 1

  1. 1 Była sobota, 10 maj 2008 roku gdy o godzinie 21:52 przyszedł sara i stwierdził:

    co zrobić gdy mysz gryzie ogon?

A Ty? Co o tym myślisz?

Możesz używać w komentarzach następujących znaczników:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sblam! Antyspam