Rano na blogu Wojtka Soczyńskiego pojawił się interesujący wpis wymieniający listę nowości i zmian jakie prawdopodobnie pojawią się w kolejnym dużym wydaniu PHP, oznaczonym numerem 5.4. Należą do nich (wg wpisu Wojtka):

  1. Dodanie zarezerwowanej przestrzeni nazw “php”.
  2. Zarezerwowanie nazw typów prostych jako słów kluczowych (string, int etc) na wypadek, gdyby kiedyś było to potrzebne (type hinting).
  3. Dodanie błędów klasy E_STRICT do klasy E_ALL.
  4. Całkowite usunięcie magic_quotes.
  5. Binarna notacja dla liczb całkowitych (np 0b10101).
  6. Krótka notacja dla tablic, czyli [‚raz’,’dwa’,’trzy’] == array(‘raz’,’dwa’,’trzy’).
  7. Nowa opcja w php.ini “disable post data processing”.
  8. Wbudowany deweloperski mini serwer www.
  9. Możliwość ustawienia klasy, jako sposobu obsługi sesji.
  10. Dodanie nowego type hint „callback”, który sprawdzał by, czy argument przekazany do funkcji jest wywoływalny – sprawdzenie dla „Closure”, array($obiekt,’nazwa_metody’), $nazwaFunkcji.

Listę przeczytałem kilka razy (aby upewnić się, że dobrze wszystko zrozumiałem), poszukałem informacji na temat niektórych punktów oraz popadłem w zadumę nad przyszłością PHP. Widać, że język chce iść do przodu, a proponowane zmiany mają mu w tym pomóc. Każdą ze zmian starałem się dobrze przeanalizować i doszedłem do takich oto wniosków.

  1. Dobre posunięcie, które zagwarantuje zamknięcie wszystkich wbudowanych w język funkcji i klas w jednym pojemniku. Mam nadzieję, że dzięki temu wywołanie wbudowanej funkcji lub klasy z poziomu przestrzeni nazw będzie traktowane identycznie. Obecnie przed nazwą klasy należy dodać backslash.
  2. Szkoda, że tylko zarezerwowanie, a nie wprowadzenie type hint. Niemniej pozwala to mieć nadzieję na przyszłość.
  3. Zmiana raczej kosmetyczna, z której będą cieszyć się puryści PHP, dla których “ordnung muss sein”.
  4. Nie pamiętam kiedy ostatni raz z tego korzystałem, więc z mojej perspektywy nie ma to żadnego znaczenia.
  5. Nie miałem jeszcze nigdy potrzeby korzystania z binarnego zapisu, więc podobnie jak w poprzednim punkcie, zmiana ta nie ma dla mnie większego znaczenia.
  6. W przypadku tej zmiany, szczerze przyznam, że nie wiem co myśleć. Z jednej strony jestem zwolennikiem upraszczania kodu, z drugiej jednak do niczego się to nie przyda. Jeśli możliwe byłoby wykonanie kodu [5, 8, 4].sort(), wówczas taka notacja miałaby sens.
  7. Tę zmianę musiałbym zobaczyć na żywo. Teoretycznie jej wprowadzenie zmniejszy zużycie pamięci. Niestety niewiele informacji można znaleźć na ten temat, więc powstrzymam się od jej komentowania.
  8. Coś na czekam z niecierpliwością, odkąd dowiedziałem się, że znajdzie się w PHP. W chwili obecnej, aby korzystać z PHP lokalnie, muszę instalować serwer (najczęściej Apache), a do testowania przygotowanej strony najczęściej muszę ustawić vhosta oraz wprowadzić zmiany w pliku hosts. Dodanie deweloperskiego serwera do PHP pozwoli wywalić zbędne oprogramowanie do kosza i skupić się na programowaniu, a nie na konfigurowaniu. Dwa doskonałe przykłady po co i jak z tego korzystać to Python oraz Ruby, a dokładniej rzecz ujmując Django ora Rails.
  9. Dawno nie korzystałem bezpośrednio z sesji (zawsze miałem od tego framework), więc ta zmiana z mojego punktu widzenia jest bez znaczenia.
  10. Ta zmiana budzie we mnie mieszane uczucia. Jako zwolennik type hint powinienem się cieszyć, że kolejny typ będzie określić na poziomie definicji metody. Jednak w tym przypadku będzie to coś sztucznego. Poza tym dokumentacja jasno stwierdza, że nie powinno polegać się na typie Closure, ponieważ może on ulec zmianie w kolejnych wersjach języka. Czyżby jednak Closure miał zostać z nami na dłużej?

Podsumowując. W ogólnym rozrachunku zmiany oceniam in-plus. Jeśli tylko udałoby się przyspieszyć rozwój języka, byłbym wniebowzięty.