Pojawiła się nowa wersja PHP, popularnego języka skryptowego zaprojektowanego dla tworzenia stron internetowych. Nowe wydanie jest ważnym krokiem w rozwoju serii 5.x i przynosi wiele ważnych zmian, jak nowe elementy składni i zwiększona wydajność.
![]()
Główne zmiany:
- nowe elementy składni:
- cechy;
- skrócona forma zapisu tablic;
- obsługa zapisu Klasa::{wyrażenie}();
- wprowadzanie liczb w zapisie binarnym (np. 0b001001101);
- zwiększona wydajność i zmniejszone zapotrzebowanie na pamięć;
- wbudowany serwer sieciowy dla trybu CLI;
- zwiększona przejrzystość kodu dzięki usunięciu wielu zdeprecjonowanych elementów (register globals, magic quotes, tryb bezpieczny i inne);
- rozszerzenie sqlite zostało przeniesione do PECL (zmiana nie dotyczy rozszerzeń sqlite3 oraz pdo_sqlite);
- dodana możliwość śledzenia postępu wysyłania plików na serwer;
Pełna lista zmian.
Przewodnik opisujący migrację z wersji 5.3 do 5.4.


PHP jest niesamowite, co tylko w jakimś języku programowania pojawia się nowa konstrukcja, natychmiast trafia do PHP.
Gdy kiedyś zobaczyłem w PHP interfejsy żywcem z Javy wzięte to przecierałem oczy, po co w języku słabo typowanym interfejsy?
Ile razy mam grzebać w PHP, to mnie mdli na samą myśl, co tam zobaczę (jedyny rodzynek to WordPress)…
A jednak PHP jest niesamowicie efektywnym i skutecznym narzędziem do tworzenia aplikacji WWW…
Zgadzam się, że ma wady – takie jak wrodzony "bałagan" w strukturze odziedziczony po starszych wersjach. Jednak taka chyba jest cena zachowania względnej wstecznej kompatybilności. Autorzy wybrali taką drogę – ma to swoje wady i zalety, jak każdy wybór ściezki rozwoju.
Możliwe że kiedyś w przyszłości – może w wersji 8.0 albo 10.0, wszystkie stare śmieci zostaną usunięte i wtedy PHP będzie naprawdę "pięknym" językiem. Na razie jest tylko bardzo efektywnym.
Żeby pisać w PHP, trzeba potrafić samemu stworzyć sobie framework, w którym nie będzie bałaganu. Bo przyznaję – PHP jest idealnym wręcz językiem do tworzenia bałaganu. Jeżeli ktoś jest bałaganiarzem, możliwości są nieskończone. Ale tak samo nieskończone są możliwości utrzymywania porządku. Tyle że programiści najwyraźniej rzadko utrzymują porządek jeśli nie muszą. Liczy się tylko taniej i szybciej. No i mamy to co mamy.
Wrodzony bałagan w PHP nie jest odziedziczony po starszych wersjach. Jest konsekwencją jednej przestrzeni nazw dla wszystkich funkcji. Stąd setki funkcji o nazwach *_open(), *_close(), *_connect() itd. Dodajmy do tego zbędne aliasy funkcji w rodzaju diskfreespace/disk_free_space i juz wiadomo skąd bajzel
Dodam odpowiedź w 2 kawałkach, może się doda tym razem…
———–
Tak, a jedna przestrzeń nazw dla wszystkich funkcji jest konsekwencją względnej kompatybilnością wsteczną z PHP4…
Twórcy PHP nie mogą znieść wszystkich niewygodnych rzeczy na raz, bo będzie to wymagało totalnego przepisania wszystkich istniejących aplikacji. A tak, można aplikacje przepisywać po kawałku.
"PHP" i "kompatybilność wsteczna" w jednym zdaniu? Coś mi tu nie pasuje… Pewnie przez aplikacje wywalające się przy aktualizacji PHP z wersji X.Y.Z do X.Y.Z+1 – ale to pewnie wina tych aplikacji.
Jedna przestrzeń nazw była już w PHP3 – to nie "kompatybilność wsteczna", tylko konsekwencja złego projektu. Fajnie, że starają się poprawiać własne błędy projektowe, ale z piasku bicza nie ukręcisz. Te register_globals czy magic_quotes – fajnie, że usunęli, ale tego nigdy nie powinni byli wprowadzać.
Jeszcze raz: wrodzony bałagan w PHP jest wrodzony, jest konsekwencją złego projektu na samym początku.
PHP nigdy nie będzie pięknym językiem. Będzie popularny, łatwy do opanowania (przynajmniej na poziomie podstawowym) i to wszystko. Może będzie się błyszczał jak wypolerowane g***o, ale nie będzie piękny.
coś ty, niekompatybilności są niewielkie i są opisane: http://fr2.php.net/manual/en/migration5.incompati… http://fr2.php.net/manual/en/migration52.incompat… http://fr2.php.net/manual/en/migration53.incompat…
choć w sumie skoro po kazdej zmianie wersji trzeba zmieniac skrypty zeby dzialaly, to co to za kompatybilnosc wsteczna?!?
Przykładowo: w tym odcinku telenoweli, wywalono register_globals, safe_mode i magic_quotes. Jest to mały postęp, ale postęp.
A nie pomyślałeś czasami że to właśnie dzięki takiemu podejściu PHP jest tak popularne ?
Co by było gdyby nagle twórcy zerwali totalnie z korzeniami i napisali nowy język ? Wszystkie aplikacje trzeba by od zera przepisywać. Wiele osób nie pogodziło by się z takim stanem rzeczy i zwyczajnie zrezygnowało z PHP na rzecz Pythona, Ruby, dotNETa albo innych rzeczy.
Każda decyzja projektowa ma swoje konsekwencje, zarówno negatywne jak i pozytywne.
Akurat Python właśnie zerwał z kompatybilnością przy wersji 3 i "wszystko" przestało działać… Efekt? Kupa – niemal* nikt powaznie nie traktuje tego języka.
* niebal, bo jest kilka firm ale… większość poważnych rozwiązań odrzuca Pythona ze względu na małą popularność i ryzyko.
tak z ciekawości – po co przechodzić na wersję 3, skoro 2.* działa? stara, dobra zasada: "nie ruszać g*, bo śmierdzi"
wszystkie strony o pythonie mowia, zeby uzywac 2x a nie 3.x, 3.x jest eksperymentalne i dlugo bedzie, wersja 2.x jest ciagle rozwijana, mamy problem z czytaniem?
dobra, minusy leca, a jakies uzasadnienie? czy po prostu rzucanie miesem, bo ktos kogos poprawił ?
Wersja 2.x nie jest już rozwijana 😛
Python 2 ma się dobrze, w tym w kwestiach komercyjnych. Python 3 powstał by pozmieniać "brzydkie" elementy raz a dobrze i minie jeszcze sporo czasu zanim z jakiś powodów będzie lepszym rozwiązaniem od Pythona 2. Nie ma ciśnienia jak w przypadku przejście z PHP4 na 5.
"Żeby pisać w PHP, trzeba potrafić samemu stworzyć sobie framework, w którym nie będzie bałaganu."
Po co pisać własny framework skoro jest Zend Framework?
ZF to mega ciezki, smierdzacy kloc. Dokumentacja czesto opisuje nie to czego potrzebujesz i po pomoc trzeba zerkac do kodu zrodlowego. Osmiele sie rzucic teorie, ze ZF nie jest frameworkiem a zbitkiem klas powiazanych ze soba (*). Iles razy mialem wrazenie, ze albo zrobisz aplikacje w sposob w jaki zaplanowali to tworcy ZF albo wcale jej nie zrobisz. Jedna z najgorszych klas z jakimi mialem do czynienia to Zend_Db_*
(*) dlaczego nie frameworkiem? Framework powinien dostarczac jakiejs podstawy, czegos na czym mozesz zaczac budowac faktyczna aplikacje. Niby taka bzdura – logowanie uzytkownika. W ZF musisz je recznie okodowac. Dla kontrastu – w Django dostajesz modul logowania, ktory dziala out-of-the-box, caly mechanizm logowania robi sie za pomoca dwoch url'i (lub troche wiecej pracy przy opcji podmiany layoutow).
Kwestia kolejna – Zend_Template. W czasach, kiedy jeszcze bawilem sie ZF'em, (1.11.x) umozliwial on dwie rzeczy – albo zrobienie tzw. 'Two-step-layout' (glowny layout + content) albo wyrenderowanie stronki. To jest przyklad myslenia ZF'a ze albo zrobisz tak jak oni sobie zazyczyli albo wcale – nie dalo sie cholerstwa dziedziczyc, zagniezdzac etc. (mogles zrobic glowny layout + content ale juz glowny layuot + sublayout + subsublayout + content juz nie) Tzn oczywiscie, ze sie dalo, ale rozwiazanie bylo tak okropne ze az zal bylo na to patrzec. Co nie zmienia faktu, ze dzialalo.. 🙂
Wyswietlanie danych. Owszem, zend daje mechanizm Paginatorow (domyslnie wspoldzialaja z Zend_Db ale mozna sobie napisac wlasny). Nie ma jednak gotowego grida ktorego moglbys rozwijac do swoich potrzeb.
Paradoksalnie jedyna rzecz ktora naprawde spodobala mi sie w ZF to spojnosc kodu. Tzn mam na mysli to, ze mniej wiecej kazda klasa miala __construct ktory wywolywal metode init ktora mozna bylo pokryc. Pierdolka, ale pozwalala utrzymac porzadek w calym balaganie. Niestety na miano frameworka to dla mnie za malo – zbyt duzo rzeczy trzeba bylo robic od zera.
Po ok. 5(?) latach kodowania w PHP (zarowno w pracy jak i po pracy) przesiadlem sie na tandem Python + Django (wczesniej Pylons) i nie zaluje. To jest naprawde framework ktory MEGA przyspiesza prace nad projektem!
pozdrawiam 🙂
"Gdy kiedyś zobaczyłem w PHP interfejsy żywcem z Javy wzięte to przecierałem oczy, po co w języku słabo typowanym interfejsy?"
Traits to nie interfejsy z Javy tylko zapożyczony z Ruby i Scali mechanizm podobny do interfejsów, ale mogących posiadać nieabstrakcyjne funkcje. Bardzo fajny mechanizm dający wielodziedziczenie, a równocześnie pozwalający uniknąć problemu "diamentu"
Swoją drogą używanie języka skryptowego innego niż JavaScript to już zaszłość, ani to wydajne ani wygodne. Tyle, że można korzystać z masy kodu napisanego d tej pory.
Widać, że teza dotycząca JavaScript jest kontrowersyjna, szkoda tylko, że nikt nie chce się odnieść to niej merytorycznie.
"Swoją drogą używanie języka skryptowego innego niż JavaScript to już zaszłość, ani to wydajne ani wygodne" – nie bylo to zbyt merytoryczne, no i co proponujesz? JS server side?
Coś się nawet próbowało i próbuje robić, ale zanim o reszcie języków skryptowych na serwerze powiemy "zaszłość", to js server side powinien zdobyć zauważalną popularność. Poza tym nie widzę powodu by po stronie serwera walczyć z różnorodnością. Co innego przeglądarka. Tutaj fajniej jest mieć święty spokój z walką o przenośność.
"no i co proponujesz?"
Oczywiście że po stronie serwera, są już frameworki JS. Osobiście wolę języki statycznie typowane, jednak JS i tak trzeba znać i używać jak chce się pisać webowo. A ponieważ ludzie są wygodni (albo leniwi jak kto woli) to prędzej czy później coraz więcej ludzi będzie chciało używać tylko jednego języka do wszystkiego. Patrząc na wydajność do jakiej doprowadzony został v8 to innym językom zostało dużo do zrobienia, aby dogonić JS. Co prawda składniowo JS nie wygląda zbyt różowo, ale nieco pomagają takie projekty jako chociażby Backbone.js
+1 za backbone – jego Twórca zna swój fach – warto popatrzeć w kod
"Ile razy mam grzebać w PHP, to mnie mdli na samą myśl, co tam zobaczę (jedyny rodzynek to WordPress)…"
Logicznie rzecz biorąc to akurat nie jest zarzut wobec PHP, ale pieskiego życia człowieka, który grzebie w cudzym kiepskim kodzie.
"Ile razy mam grzebać w PHP, to mnie mdli na samą myśl, co tam zobaczę (jedyny rodzynek to WordPress)… "
A to mnie akurat ubawiło. WordPress pod względem kodu jest takim syfem że aż szkoda tego dotykać.
Ja się wolałem tutaj nie wypowiadać bez wsparcia, bo dobrze nie pamiętam, ale kiedyś właśnie chciałem na przykładzie WP popatrzeć jak to kodują doświadczeni ludzie i dałem sobie spokój, bo kultura kodu specjalnie nie porażała.
Pisałem już że IntenseDebate ssie ?
Dodałem tutaj odpowiedź jakieś 3 razy 3 godziny temu, do tej pory sie nie pokazał. Ech…
Outsourcing ma swoje wady. 😉
Marudzicie jak stara baba, w PHP można programować piękne aplikacje, jak się potrafi programować. Jak w każdym języku można i napisać kiepski kod, ale jakość kodu jest w 99% spawą jego autora i tyle.
W takim razie PHP ma phpecha do swoich użytkowników, bo większość z nich programować nie potrafi.
Wynika to z kilku rzeczy. PHP jest bezsprzecznie najpopularniejszym językiem do programowania stron www. Jest także dostepny na każdym serwerze, na którym można postawić sobie nawet najprostrząs stronę. Zatem każdy kto zaczyna, bróbuje właśnie w tym języku, dopiero jak ktoś trochę pozna tego świata może zacząć czukac gdzie indziej. A więc przeważnie amator www zaczyna od PHP, co w żadnym wypadku nie oznacza, że kto programuje w PHP nie moż być zawdowcem – wręcz przeciwnie. A to, że język jest nisamowicie rozbudowany powoduje, że każdy może sobie go wykorzystywać w najwygodniejszy dla siebie spoób.
"<?= is now always available regardless of the short_open_tag setting."
Yes, yes, yes!
Pojawiły się także nowe wersje najlepszych kompilatorów pod słońcem, mianowicie GCC 4.7.0 oraz 4.6.3
Język programowania to abstrakcyjny byt – można go zmienić w dowolnym stopniu. Mam pytanie do krytykujących PHP: jak wg Was PHP powinno prawidłowo wyglądać?
Drugie pytanie: dlaczego nie możecie sobie wyobrazić, że za 3-5 lat PHP będzie eleganckim, nowoczesnym i czystym językiem? Co jest tą niepokonywalną przeszkodą?
Prawdziwa cnota, krytyk się nie boi 😛
PHP jako język jest całkiem niezły. Problem tylko w tym, aby programiści umieli go wykorzystać. Problemem jest też kompatybilność wstecz co jest niby zaletą, ale po części i wadą. Tyle, że są inne języki, które nie pozwalają mieszać w kodzie i trudniej jest pisać nieczytelnie kod.
3-5 lat temu mogłem to sobie wyobrazić. I co? 😉
3-5 lat temu szumiano hucznie o PHP 6, które miało być takim Pythonem 3. Patrząc na Pythona 3, dobrze iż zarzucono tamtejszą wersję PHP 6.
I język programowania nie jest do tego, aby świetnie i ładnie się w nim pisało. Jest do tego, aby można było zarobić na nim pieniądze. PHP jest dobrym biznesowym językiem programowania aplikacji internetowych z wielu względów, przez co jest popularne mimo swoich wad. Taki Ruby mimo iż piękny, musiał poczekać do powstania Ruby on Rails, aby mógł zostać "doceniony". Kto słyszał o tym języku przed RoR? Kto przed RoR w nim pisał? Dobry język programowania to nie czysty, ładny, tylko użyteczny z biznesowego punktu widzenia.
PS. myślniku żaby, to nie jest przytyk, ale poruszyłeś bardzo ciekawą kwestię którą postanowiłem rozwinąć 🙂
> język programowania nie jest do tego, aby świetnie i ładnie się w nim pisało.
> Jest do tego, aby można było zarobić na nim pieniądze
Bardzo ciekawa teza. I bardzo nieprawdziwa.
Chleb nie jest do tego, żeby był smaczny. Chleb jest do tego, żeby można było zarobić na nim pieniądze.
W takim przypadku zacznij robić smaczny chleb poniżej kosztów produkcji. Jakoś nikomu się nie chce… Ale wielu piekarzom chce się robić smaczny chleb, bo mogą na nim więcej zarobić. Ale może jest jakiś troll, który woli zarobić mniej na smacznym chlebie niż na mniej smacznym…
Ludzie, opamiętajcie się z tymi minusami. Jakieś sfrustrowane seksualnie małolaty to klikają? Można zaminusować coś poniżej krytyki albo nieprawdziwego, ale jak widzę co czasem tu się wyrabia…
Do wypowiedzi "poniżej poziomu" jest link "Zgłoś". Plusy i minusy są po to, żeby wyrazić swoje poparcie lub dezaprobatę – a więc jak najbardziej do wyrażania emocji. Natomiast jeśli ktoś chce racjonalnie argumentować to klika przycisk "Odpowiedz". Tak przynajmniej mi się wydaje.
PHP 5.4 wydane, ale jechanie na mysql_connect w różnych nowych tutorialach to się na pewno nie skończy… a o "printowaniu" kodu HTML to nawet nie wspominam. Młody uczy się archaicznych pomysłów i później zamiast znać np. frameworki potrafi tylko printować jak leci jakieś "scrypty", no i "wie lepiej" jak i nie rozumie niczego po angielsku – ale tylko jeżeli dotyczy to programowania…
Obecnie każdy produkt w informatyce przechodzi następujący cykl:
1. Wprowadzenie nowego produktu, w zamierzeniu szybkiego i prostego w użyciu.
2. Dodanie brakujących funkcji.
3. Dodanie pożądanych funkcji.
4. Zaobserwowanie spadku wydajności.
5. Dodanie nadmiarowych funkcji.
6. Zaobserwowanie spadku wydajności.
7. Zaobserwowanie trudnosci w uzytkowaniu.
8. Powrót do pkt. 1
Jeszcze trochę tego rozwoju PHP i będziemy w punkcie 6,7 a potem rzecz jasna 8.