Przejdź do treści
DedicatedPHP Kontakt

Ewolucja języka PHP od wersji 1 do 8

Dowiedz się, jak rozwijał się język programowania PHP

Ewolucja języka PHP od wersji 1 do 8

PHP, znany jako Hypertext Preprocessor, to język skryptowy po stronie serwera. Jest wykorzystywany głównie do tworzenia stron internetowych i został wydany po raz pierwszy w 1995 roku przez Rasmusa Lerdorfa. Od tego czasu PHP doczekał się wielu wersji, z których każda zawierała znaczące ulepszenia i zmiany. Przyjrzyjmy się ewolucji PHP od jego początków do PHP 8, ostatniej znanej wersji z września 2021 roku.

Wersje PHP i główne zmiany

PHP/FI (Personal Home Page / Forms Interpreter) 1.0 (wydany w 1995 r.)

Pierwszą wersję PHP, znaną wówczas jako PHP/FI, opracował Rasmus Lerdorf. W tamtym czasie PHP był prostym zestawem skryptów CGI w Perlu, które pomagały Lerdorfowi w prowadzeniu osobistego CV i gromadzeniu pewnych danych. Dopiero gdy Lerdorf połączył te skrypty z C, tworząc PHP/FI, PHP stał się produktem, z którego mogli korzystać inni.

PHP/FI 2.0 (wydany w 1997 r.)

Wersja 2 PHP/FI wprowadziła szereg funkcji, które położyły podwaliny pod to, czym PHP stał się w przyszłości. Funkcje te obejmowały obsługę formularzy i plików cookie, a także możliwość osadzania kodu PHP bezpośrednio w HTML.

PHP 3 (wydane w 1998 roku)

Opracowany przez Andiego Gutmansa i Zeeva Suraskiego, PHP 3 wprowadził gruntowną przebudowę języka, ustanawiając większość znanych nam dziś konwencji składniowych. Po raz pierwszy wprowadzono obsługę obiektów i była to pierwsza wersja, która naprawdę wyglądała jak kompletny język programowania.

PHP 4 (wydany w roku 2000)

Wersja PHP 4 wprowadziła silnik Zend, oprogramowanie interpretujące kod PHP. Doprowadziło to do poprawy wydajności oraz lepszego wsparcia dla programowania obiektowego. Zawierało również funkcje takie jak trwałość sesji i buforowanie wyjściowe.

PHP5

PHP 5 wprowadził znaczące udoskonalenia w programowaniu obiektowym, dodając klasy abstrakcyjne, interfejsy, klonowanie obiektów i wyjątki. Ulepszono również obsługę XML i wprowadzono obsługę SQLite.

PHP 5.0 (wydane w lipcu 2004)

  • Ulepszenia programowania obiektowego :Wprowadzono kompletny model obiektów obejmujący modyfikatory dostępu, interfejsy, klonowanie i wyjątki.
  • Ulepszona obsługa XML :Dodano rozszerzenie SimpleXML ułatwiające obsługę XML.
  • SQLite: Dodano SQLite, lekki moduł bazy danych SQL domyślnie w PHP.

PHP 5.1 (wydane w listopadzie 2005)

  • Obsługa PDO (obiektów danych PHP): Udostępnia interfejs umożliwiający dostęp do baz danych w PHP.
  • Poprawa wydajności :Zawiera dodanie modułu zbierającego śmieci, który usuwa cykle referencyjne.

PHP 5.2 (wydane w listopadzie 2006)

  • Wprowadzenie do filter_list() :Pomaga w bezpieczny sposób sprawdzać poprawność i filtrować dane.
  • Poprawa wydajności i stabilności :Zawiera aktualizację biblioteki PCRE, która zapewnia lepszą kompatybilność i wydajność.

PHP 5.3 (wydane w czerwcu 2009)

  • Przestrzenie nazw :Pozwalają lepiej zorganizować kod w pakietach.
  • Późne wiązania statyczne :Poprawia dziedziczenie kodu w PHP.
  • Zamknięcia (funkcje anonimowe) :Funkcje można teraz tworzyć bez podawania konkretnej nazwy.
  • Ulepszenia obsługi wyjątków :Wprowadzono możliwość wykorzystania wielokrotnych wyjątków catch.
  • Obsługa zagnieżdżonej składni trójkowej bez konieczności stosowania nawiasów.

PHP 5.4 (wydane w marcu 2012)

  • Cechy :Umożliwia ponowne wykorzystanie kodu w językach programowania o pojedynczym przodku, co stanowi rodzaj dziedziczenia wielokrotnego.
  • Składnia krótkiej tablicy :Teraz możliwe jest deklarowanie tablic za pomocą nawiasów kwadratowych [] zamiast używania funkcji array().
  • Ulepszone zarządzanie pamięcią :Zmniejsza ogólne zużycie pamięci.

PHP 5.5 (wydane w czerwcu 2013 r.)

  • Generatory :Umożliwia łatwe tworzenie iteratorów bez konieczności implementacji interfejsu iteratora.
  • Słowo kluczowe „na koniec” :Pomaga zapewnić, że segment kodu jest zawsze wykonywany, niezależnie od tego, czy został zgłoszony wyjątek.
  • Obsługa list w foreach.

PHP 5.6 (wydane w sierpniu 2014)

  • Rozpakowywanie argumentów : Umożliwia użycie ... do rozpakowania argumentów z tablicy lub obiektu Traversable.
  • Użyj funkcji i użyj const :Importuj funkcje i stałe do przestrzeni nazw.
  • Ulepszenia GMP :Umożliwia użycie liczb GMP w funkcjach akceptujących liczby całkowite lub ciągi znaków.
  • Ulepszenia bezpieczeństwa :Dodano obsługę certyfikatów podpisywania kluczem publicznym.

PHP 7 (wydany w 2015 r.)

W PHP 7 nastąpił ogromny skok wydajności dzięki wprowadzeniu mechanizmu wykonywania Just In Time (JIT). Dodatkowe funkcje obejmują typy zwracane, deklaracje typów skalarnych, operator scalania wartości null oraz możliwość definiowania tablic stałych za pomocą funkcji define().

PHP 7.0 (wydane w grudniu 2015 r.)

  • Poprawa wydajności :Nowy silnik PHPNG (Zend Engine 3) poprawia wydajność, zmniejsza zużycie pamięci i ułatwia obsługę błędów.
  • Deklaracje typu zwracanego :Ta funkcja umożliwia określenie typu wartości, jaką funkcja powinna zwracać.
  • Deklaracje typów skalarnych :Pozwala na wymuszenie typu parametrów w funkcjach (int, float, string, bool).
  • Operator fuzji zerowej (??) : Ten operator upraszcza sprawdzanie wartości null.
  • Operator statku kosmicznego (<=>) :Wprowadzono w celu ułatwienia porównywania dwóch wyrażeń.

PHP 7.1 (wydane w grudniu 2016 r.)

  • Typy dopuszczające wartość null :Dozwolone jest wskazanie, że wartość zwracana przez funkcję może być określonego typu lub nullem.
  • Funkcje puste :Typ void wprowadzono dla funkcji, które niczego nie zwracają.
  • Stała widoczność klasy :Można teraz definiować stałe klasy jako publiczne, prywatne lub chronione.
  • Iterowalny pseudotyp :Wprowadź typ iterowalny dla parametrów i typy zwracane funkcji.

PHP 7.2 (wydane w listopadzie 2017 r.)

  • Libsod :Ta biblioteka dla nowoczesnej i bezpiecznej kryptografii jest teraz domyślnie dołączona.
  • Ulepszenia typu :Dodano typ „obiekt” i zezwolono na stosowanie typów abstrakcyjnych w typach parametrów i deklaracjach typów zwracanych.

PHP 7.3 (wydane w grudniu 2018 r.)

  • Przecinki końcowe w wywołaniach funkcji :W wywołaniach funkcji dozwolone są przecinki końcowe.
  • Poprawa szybkości kodu JSON :Poprawiono wydajność funkcji json_encode() i json_decode().
  • Ulepszenia GC :Wprowadza ulepszenia do modułu zbierającego śmieci, co skutkuje mniejszym wykorzystaniem pamięci.

PHP 7.4 (wydane w listopadzie 2019 r.)

  • Funkcje strzałkowe :Funkcja ta umożliwia tworzenie anonimowych funkcji w bardziej zwięzły sposób.
  • Właściwości wpisane :Właściwości klasy mogą teraz mieć zadeklarowane typy.
  • Rozpakowywanie wewnątrz tablic :Ta funkcja umożliwia rozpakowywanie tablic wewnątrz innych tablic.
  • Słabe odniesienia :Umożliwia zachowanie odniesień do obiektów bez zapobiegania ich zniszczeniu przez zbieracza śmieci.

PHP 8 (wydany w 2020 r.)

Wersja PHP 8 przyniosła szereg ekscytujących nowych funkcji, takich jak kompilacja Just-In-Time (JIT), która dodatkowo poprawia wydajność. Dodano również typy danych Union, wyrażenia match, operator nullsafe, argumenty nazwane i atrybuty, a także wiele innych funkcji.

No i gdzie jest wersja 6?

Wersja PHP 6 faktycznie istniała jako projekt, ale nigdy nie został oficjalnie wydany Głównym celem PHP 6 było zapewnienie natywnej obsługi Unicode, standardu umożliwiającego przetwarzanie tekstu w dowolnym języku świata.

Twórcy napotkali jednak szereg problemów problemy podczas rozwoju Implementacja pełnej obsługi Unicode w jądrze PHP okazała się znacznie większym wyzwaniem niż oczekiwano. Ponadto wydajność wersji zapoznawczej PHP 6 z Unicode była znacznie niższa.

Z powodu tych trudności i opóźnień w rozwoju, projekt PHP 6 został ostatecznie porzucony. Twórcy postanowili pominąć numer 6 w nazewnictwie kolejnej głównej wersji PHP, aby uniknąć pomyłki z nieudanym projektem PHP 6. Dlatego po PHP 5.6, następną główną wersją było PHP 7.0.

PHP 7 zawierało wiele funkcji zaplanowanych dla PHP 6, ale nie zawierało natywnej obsługi Unicode w rdzeniu języka. Zamiast tego PHP 7 skupiło się na poprawie wydajności i dodaniu nowych funkcji do języka.

Porozmawiajmy o wydajności. Czy warto dokonywać modernizacji?

Ewolucja języka programowania nie tylko przyniosła nowe funkcjonalności, ale szczególny nacisk położono także na poprawę wydajności w każdej kolejnej wersji:

  • PHP/FI 2.0 - Niski . Nie został zoptymalizowany pod kątem wydajności, gdyż główny nacisk położono na możliwości formularzy i interakcję z bazami danych.
  • PHP 3 - Ulepszono w stosunku do PHP/FI 2.0. Przepisanie silnika PHP pozwoliło na poprawę wydajności i efektywności.
  • PHP 4 - Ulepszono w stosunku do PHP 3. Wprowadzenie silnika Zend zapewniło dalszą poprawę wydajności.
  • PHP 5.0 - Podobny do PHP 4. Mimo że zawierał znaczące udoskonalenia w programowaniu obiektowym i obsłudze XML, wydajność była podobna do PHP 4.
  • PHP 5.1 - 5.6 - Udoskonalane z każdą kolejną wersją, szczególnie w zakresie optymalizacji wydajności i udoskonaleń w zbieraniu śmieci.
  • PHP 7.0 - Znacznie ulepszona w stosunku do PHP 5.X dzięki wprowadzeniu Zend Engine 3. Wydajność PHP 7.0 może być dwu- lub trzykrotnie większa niż PHP 5.6 w przypadku wielu aplikacji.
  • PHP 7.1 - 7.4 - Każda pomniejsza wersja wprowadzała ulepszenia wydajności, choć nie tak drastyczne jak przejście z PHP 5.6 na PHP 7.0.
  • PHP 8.0 - Ulepszone w stosunku do PHP 7.4. Dodanie kompilacji Just-In-Time (JIT) może poprawić wydajność w niektórych przypadkach, choć poprawa może nie być znacząca w przypadku typowych aplikacji internetowych.

A bezpieczeństwo? Co możesz mi powiedzieć?

PHP/FI 2.0 - PHP 3

  • W tych wczesnych wersjach bezpieczeństwo nie było priorytetem i wiele funkcji zabezpieczających nie było w nich uwzględnionych.

PHP4

  • W PHP 4 wprowadzono tryb safe_mode, który miał zapobiegać niektórym typom ataków, ale ostatecznie uznano go za nieskuteczny i został wycofany oraz usunięty w PHP 5.4.

PHP5

PHP 5 wprowadziło szereg udoskonaleń w zakresie bezpieczeństwa:

  • Magiczne cytaty: Wprowadzono w celu zapobiegania atakom typu SQL injection, jednak krytykowano go za niespójne działanie i ostatecznie wyłączono domyślnie w PHP 5.3, a następnie usunięto w PHP 5.4.
  • Udoskonalenia w obsłudze błędów: W PHP 5 wprowadzono wyjątki, które usprawniają obsługę błędów i mogą pomóc zapobiec ujawnianiu poufnych informacji.
  • PDO (obiekty danych PHP): Wprowadzone w PHP 5.1, zapewniają interfejs dostępu do baz danych obejmujący przygotowane zapytania, które mogą pomóc w zapobieganiu atakom typu SQL injection.

PHP 5.2

  • Filtr wejściowy: PHP 5.2 wprowadziło rozszerzenie filtra, które umożliwia walidację i filtrowanie danych wejściowych w bezpieczny i spójny sposób.

PHP 5.3

  • PHAR (Archiwum PHP): PHP 5.3 wprowadził obsługę PHAR, czyli sposobu pakowania całych aplikacji PHP w jedno archiwum. Chociaż samo w sobie nie jest to udoskonalenie bezpieczeństwa, PHAR zawiera kilka zabezpieczeń zapobiegających atakom, takich jak możliwość weryfikacji podpisów cyfrowych.

PHP 5.6

  • Poprawa zabezpieczeń SSL/TLS: PHP 5.6 wprowadziło obsługę certyfikatów podpisujących klucz publiczny i ulepszenia domyślnych ustawień SSL/TLS.

PHP 7

W PHP 7 wyłączono lub usunięto szereg przestarzałych i potencjalnie niebezpiecznych funkcji i cech:

  • Usunięto kilka niebezpiecznych funkcji skrótu, takich jak crypt() i hash().
  • Wyłączono automatyczną deserializację, aby zapobiec podatności na wstrzykiwanie obiektów.
  • Wprowadzono deklarację typu i deklarację typu zwracanego, aby pomóc zapobiec błędom typu, które mogłyby zostać wykorzystane.

PHP 7.2

  • Poprawa bezpieczeństwa haseł: PHP 7.2 wprowadził funkcję password_hash() ze wsparciem dla Argon2, bezpieczniejszego algorytmu haszującego hasła.

8 PHP

PHP 8 nie wprowadziło wielu nowych funkcji bezpieczeństwa, ale kontynuowało trend z PHP 7 polegający na usuwaniu lub wyłączaniu przestarzałych i potencjalnie niebezpiecznych funkcji.

Wniosek

Aktualizacja do najnowszej wersji PHP często oferuje kilka korzyści Po pierwsze, aktualizacje często obejmują ulepszenia wydajności , co może przyspieszyć działanie aplikacji internetowych. Po drugie, nowsze wersje często zawierają nowe funkcje co może sprawić, że kod będzie bardziej wydajny i łatwiejszy w pisaniu i utrzymaniu. Po trzecie, nowsze wersje PHP często zawierają ulepszenia bezpieczeństwa, które mogą chroń swoją aplikację przed atakami i lukami w zabezpieczeniach.

Należy jednak pamiętać, że aktualizacja do nowej wersji PHP może przynieść wyzwania Istniejący kod może wymagać rewizji lub przebudowy, aby obsługiwać nowe funkcje lub unikać funkcji, które zostały wyłączone lub usunięte. W obu przypadkach aktualizacja PHP jest niezbędnym elementem działania bezpieczna, wydajna aplikacja internetowa .

Chcesz zastosować te pomysły w swoim projekcie?Omówmy Twoją platformę PHP.
Zobacz powiązaną usługę