ele2

PHP: historia wersji

Facebook, CNBC, NASA, Wikipedia, Business Insider, Uniwersytet Harvarda... to tylko niektóre przykłady serwisów zbudowanych na PHP - najpopularniejszym języku programowania, z którego korzysta aż 82% stron internetowych. Ciągły rozwój i ogromna społeczność sprawiają, że PHP jest wybierany np. przez startupy, dla których PHP jest idealnym rozwiązaniem, a także przez duże firm i instytucje na całym świecie. Jak to się wszystko zaczęło i jak na przestrzeni lat zmieniały się kolejne wersje, opisuję w poniższym tekście.

Autorem pierwotnej wersji PHP jest Rasmus Lerdorf. Powstała ona w 1994 roku jako zestaw skryptów Perla w celu monitorowania internautów odwiedzających witrynę i przeglądających Lerdorfa CV. Prędko okazało się, że zbyt duży ruch wymaga reakcji ze strony programisty, dlatego w dalszych pracach użył on języka C i dodał nowe opcje. Zainteresowanie nie słabło, ludzie zwracali się z prośbami o możliwość wykorzystywania tych narzędzi do własnych potrzeb, co w 1995 roku poskutkowało pojawieniem się Personal Home Page Tools. Rasmus Lerdorf nie zwalniał jednak tempa - do PHP dodał usługę mSQL oraz połączył z Form Interpreter. W ten oto sposób świat ujrzał PHP/FI, a w 1997 roku wersję 2.0, która już wtedy cieszyła się kilkoma tysiącami użytkowników oraz obsługą około 50 tysięcym domen. Od tamtego czasu PHP/FI zaczął rozwijać się w dynamicznym tempie.

PHP 3

W 1997 r. Zeev Suraski i Andi Gutmans, izraelscy programiści, postanowili kontynuować prace nad językiem PHP. Uznali bowiem, że PHP/FI nie radzi sobie dostatecznie w kontekście wymagań aplikacji eCommerce, którą w tym czasie tworzyli. Postanowili więc przepisać kod od początku, opracowali nową architekturę i w 1998 roku ogłosili powstanie nowej wersji.

W PHP 3 pojawiły się podstawy programowania obiektowego, ale przede wszystkim największym wyróżnikiem była modułowość, a więc możliwość wzbogacania funkcjonalności PHP poprzez dodawanie nowych modułów przez użytkowników.

Ponadto PHP 3 zaczęło obsługiwać różne bazy danych: mSQL, MySQL, PostgreSQL. Wielu programistów było zdania, że osadzone elementy są znacznie łatwiejsze w obsłudze niż próby tworzenia oddzielnych plików HTML i CGI. Wszystko to sprawiło, że ogólna wydajność stron internetowych została znacznie zoptymalizowana, a zarządzanie dużymi witrynami stało się efektywniejsze, ponieważ składniki strony www zostały zebrane w jednym pliku HTML.

PHP 4

Wspomniana modułowość i kwestia wydajności nie dawała jednak Suraskiemu i Gutmansowi spokoju. Powodowani chęcią ciągłych ulepszeń podjęli dalsze prace na źródłowym kodem.

Tak oto w 1999 roku ukazał się oficjalnie Zend Engine - silnik języka skryptowego, który stał się fundamentem pod budowę PHP 4, a który zainaugurował rok później.

Przez cztery następne lata ukazały się trzy kolejne edycje: 4.1, 4.2, 4.3, a każda z nich charakteryzowała się poprawą bezpieczeństwa oraz szybkości działania.

Myśląc o PHP 4 niewątpliwie duży akcent należy położyć na wspomniany Zend Engine. Ten skryptowy silnik udostępniony na zasadach open source, który interpretuje język programowania PHP, został napisany w C jako zoptymalizowany modułowy back-end. Co istotne, aby tu zaznaczyć, to fakt, że po raz pierwszy mógł być używany w aplikacjach poza PHP. Silnik zarządza pamięcią, zasobami, a jego wydajność i rozszerzalność miały bezpośredni wpływ na rozwijanie kolejnych wersji PHP.

PHP 5

Mówiąc o wersji numer 5, należałoby powiedzieć: “coś za coś”. Nowy model programowania obiektowego, który został opracowany, sprawił, że zniknęła część kompatybilności z poprzednimi wersjami PHP. Oczywiście nie świadczy to na niekorzyść PHP 5, bowiem przemieniono moduły, wliczając to te, które służyły do obsługi XML-a i komunikacji z bazą danych.

Innymi istotnymi zmianami było zaimplementowanie funkcji obsługujących język XML do jądra aplikacji, całkowite przepisanie rozszerzenia MySQL - jednego z najłatwiejszych, bezpłatnych programów bazodanowych typu open source, którego wydajność w połączeniu z PHP 4 nie była najlepsza, zaś w PHP 5 zoptymalizowano rozszerzenie MySQL, aby było kompatybilne z MySQL 5.0. Pojawiła się również funkcja __autoload (), której zadaniem było przyspieszenie czasu kodowania i zwiększenie wydajności witryny. Poprawiono też działanie PHP pod systemem Windows.

W 2009 roku wydano PHP 5.3, ale już w 2005 pojawiały się informacje, że ruszają prace na nową wersją.

PHP 6

Unicode. Słowo-klucz gdy mowa o wersji 6. Za cel obrano sobie usunięcie przestarzałych rozwiązań jeszcze z czasów PHP/FI oraz PHP3, aby zaradzić nadal pojawiającym się kłopotom z kompatybilnością. Owe zmiany odnosiły się bowiem do wdrożenia usprawnień modelu obiektowego w języku obsługi Unicode.

Twórcom zależało, żeby dodać natywną obsługę Unicode do PHP. Problem jednak z jakim się zderzyli, to niedobór programistów, którzy identyfikowali się z potrzebą tych zmian, a także kłopoty z wydajnością w kontekście samej konwersji UTF-16.

Koniec końców w 2010 roku projekt w obecnej formie został oficjalnie zarzucony i przygotowano wydanie PHP 5.4 bez uwzględnienia funkcji Unicode z PHP 6.

Wersję numer 6, nigdy nie wydaną, ocenia się w kategoriach porażki. Nie dziwi więc fakt, że podjęto inicjatywę stworzenia następnej.

PHP 7

Za oficjalny początek prac nad PHP 7 uznaje się rok 2014. Podstawą wersji była eksperymentalna gałąź - PHPNG (PHP Next Generation) mająca za zadanie optymalizację wydajności.

Deweloperzy bardzo ciężko pracowali nad refaktoryzacją kodu w celu zmniejszenia zużycia pamięci i zwiększenia wspomnianej wydajności. I na pewno to się udało. Benchmarki dla PHP 7 pokazują dwukrotnie większą prędkość niż dla PHP 5.6 i o 50% mniejsze zużycie pamięci. To niewątpliwy sukces tej wersji.

Zmniejszenie zużycia pamięci umożliwia lepszą obsługę żądań wraz z możliwością budowania mikro usług w oparciu o PHP. Wewnętrzne zmiany otwierają również możliwości przyszłych optymalizacji, które mogą jeszcze bardziej zwiększyć wydajność. W tym miejscu warto zaakcentować kompilator JIT, który z kolei w pełnej krasie pojawi się w PHP 8.

Nadmienić należy, że wersji numer 7 poprawiono czytelność kodu poprzez wprowadzenie operatora spaceship operator. Jest to kombinacja wszystkich trzech znaczników użytych w jego konstrukcji i w zależności od tego, który jest prawdziwa, zwraca inną wartość.

Drugim operatorem, na którego powinniśmy zwrócić uwagę to Null Coalesce Operator (??), który także zwiększa czytelność i powoduje, że kod jest krótszy. Operator weryfikuje, czy istnieje wartość NULL i zwraca lewą stronę operatora - jeśli nie i prawą - jeśli take.

I wreszcie kwestia błędów krytycznych. W wersjach poprzednich ich obsługa spędzała sen z powiek programistom. Jeśli bowiem wystąpił taki błąd, zamiast wywołania procedury obsługi błędów, skrypt się wówczas zatrzymywał - pojawiał się biały ekran. PHP 7 pozwala na wyrzucenie wyjątku, gdy wystąpi błąd, ale już nie wstrzymuje całego skryptu. Oczywiście pozwala to również na poprawę czytelności kodu. ParseError, TypeError, ArithmeticErrors i AssertionError - zebrano te błędy w sekcji Error w taki sposób, że teraz generują wystąpienia błędu w PHP 7, a które wcześniej były krytyczne.

PHP 8

Odsłona najnowszej wersji nastąpi 26 listopada 2020. Warto poczytać, co nowego znajdzie się w PHP 8, ale z pewnością wskazać można na kompilator JIT, który stanie się wkrótce natywną częścią języka.

Podsumowanie

Oprócz programowania, w szeroki wachlarz usług PHP developmentu, zaliczyć można również dużą liczbę bibliotek stworzonych i wspieranych przez społeczność, a także popularne framework: Drupal, Symfony czy Laravel, na których można rozwijać zaawansowane projekty. W naszej agencji drupalowej jesteśmy przekonani, że PHP będzie nadal rozwijany i jeszcze przez lata plasować się będzie w czołówce języków wykorzystywanych do budowy stron internetowych.

Looking for a job as a PHP/Drupal Developer?