PHP, oftewel Hypertext Preprocessor, is een server-side scripttaal. Het wordt voornamelijk gebruikt voor webontwikkeling en werd voor het eerst uitgebracht in 1995 door Rasmus Lerdorf. Sindsdien heeft PHP een groot aantal versies gekend, elk met aanzienlijke verbeteringen en wijzigingen. Laten we eens kijken naar de evolutie van PHP vanaf het begin tot PHP 8, de laatst bekende versie (september 2021).
PHP-versies en belangrijke wijzigingen
PHP/FI (Personal Home Page / Forms Interpreter) 1.0 (Uitgebracht in 1995)
De eerste versie van PHP, toen bekend als PHP/FI, werd ontwikkeld door Rasmus Lerdorf. Destijds was PHP een eenvoudige set CGI Perl-scripts die Lerdorf hielpen bij het bijhouden van zijn persoonlijke cv en het verzamelen van bepaalde gegevens. Pas toen Lerdorf deze scripts combineerde met C om PHP/FI te creëren, werd PHP een product dat door anderen gebruikt kon worden.
PHP/FI 2.0 (Uitgebracht in 1997)
PHP/FI versie 2 introduceerde een aantal functies die de basis legden voor wat PHP in de toekomst zou worden. Deze functies omvatten ondersteuning voor formulieren en cookies, evenals de mogelijkheid om PHP-code direct in HTML in te sluiten.
PHP 3 (Uitgebracht in 1998)
PHP 3, ontwikkeld door Andi Gutmans en Zeev Suraski, bracht een complete herziening van de taal met zich mee en legde de basis voor de meeste syntactische conventies die we vandaag de dag kennen. Het bevatte voor het eerst ondersteuning voor objecten en was de eerste versie die er echt uitzag als een volwaardige programmeertaal.
PHP 4 (Uitgebracht in het jaar 2000)
PHP versie 4 introduceerde de Zend-engine, een stuk software dat PHP-code interpreteert. Dit leidde tot verbeterde prestaties en betere ondersteuning voor objectgeoriënteerd programmeren. Het bevatte ook functies zoals sessiepersistentie en uitvoerbuffering.
PHP5
PHP 5 introduceerde aanzienlijke verbeteringen in objectgeoriënteerd programmeren, met de toevoeging van abstracte klassen, interfaces, objectklonen en uitzonderingen. Ook de ondersteuning voor XML werd verbeterd en ondersteuning voor SQLite werd geïntroduceerd.
PHP 5.0 (Uitgebracht in juli 2004)
- Verbeteringen in objectgeoriënteerd programmeren Introduceerde een compleet objectmodel, inclusief toegangsmodifiers, interfaces, klonen en uitzonderingen.
- Verbeterde XML-verwerking De SimpleXML-extensie is toegevoegd voor een eenvoudigere verwerking van XML.
- SQLite: SQLite, een lichtgewicht SQL-database-engine, was inbegrepen. In PHP is dit standaard ingeschakeld.
PHP 5.1 (Uitgebracht in november 2005)
- PDO (PHP Data Objects)-ondersteuning: Biedt een interface voor toegang tot databases in PHP.
- Prestatieverbeteringen Dit omvat de toevoeging van een garbage collector om referentiecycli te beëindigen.
PHP 5.2 (Uitgebracht in november 2006)
- Introductie van filter_list() Helpt bij het veilig valideren en filteren van gegevens.
- Prestatie- en stabiliteitsverbeteringen Bevat de update van de PCRE-bibliotheek, die de compatibiliteit en prestaties heeft verbeterd.
PHP 5.3 (Uitgebracht in juni 2009)
- Naamruimten Ze maken het mogelijk om de code beter te organiseren in pakketten.
- Late statische bindingen : Verbetert de code-overerving in PHP.
- Closures (anonieme functies) Functies kunnen nu zonder specifieke naam worden aangemaakt.
- Verbeteringen in de afhandeling van uitzonderingen De mogelijkheid om meerdere uitzonderingen te vangen wordt geïntroduceerd.
- Ondersteuning voor geneste ternaire syntaxis zonder haakjes.
PHP 5.4 (Uitgebracht in maart 2012)
- Onderscheidende kenmerken Maakt hergebruik van code mogelijk in programmeertalen met één voorouder, een vorm van meervoudige overerving.
- Korte array-syntaxis Het is nu mogelijk om arrays te declareren met vierkante haken [] in plaats van de functie array() te gebruiken.
- Verbeterd geheugenbeheer Vermindert het totale geheugengebruik.
PHP 5.5 (Uitgebracht in juni 2013)
- Generatoren Hiermee kunnen eenvoudig iterators worden aangemaakt zonder dat de iterator-interface hoeft te worden geïmplementeerd.
- Tot slot trefwoord Helpt ervoor te zorgen dat een stuk code altijd wordt uitgevoerd, ongeacht of er een uitzondering wordt gegenomen.
- Ondersteuning voor lijsten in foreach.
PHP 5.6 (Uitgebracht in augustus 2014)
- Argumentanalyse Hiermee kunt u ... gebruiken om argumenten uit een array of een Traversable-object uit te pakken.
- Gebruik een functie en gebruik `const`. : Importeer functies en constanten in een naamruimte.
- GMP-verbeteringen Hiermee kunnen GMP-nummers worden gebruikt in functies die gehele getallen of tekenreeksen accepteren.
- Beveiligingsverbeteringen Ondersteuning voor certificaten voor openbare sleutelondertekening is toegevoegd.
PHP 7 (Uitgebracht in 2015)
Met PHP 7 werd een enorme sprong voorwaarts gemaakt in prestaties dankzij de introductie van de Just-In-Time (JIT)-uitvoeringsengine. Extra functies zijn onder andere retourtypen, scalaire typedeclaratie, de null-merge-operator en de mogelijkheid om constante arrays te definiëren met behulp van define().
PHP 7.0 (Uitgebracht in december 2015)
- Prestatieverbetering De nieuwe PHPNG-engine (Zend Engine 3) verbetert de prestaties, vermindert het geheugenverbruik en vereenvoudigt de foutafhandeling.
- Retourtype-declaraties Met deze functie kunt u het type waarde specificeren dat een functie moet retourneren.
- Scalaire typedeclaraties Hiermee kunt u het type van parameters in functies afdwingen (int, float, string, bool).
- Null Fusion Operator (??) Deze operator vereenvoudigt het controleren op null-waarden.
- Ruimteschipoperator (<=>) : Geïntroduceerd om de vergelijking tussen twee uitdrukkingen te vergemakkelijken.
PHP 7.1 (Uitgebracht in december 2016)
- Nullable typen Het is toegestaan om aan te geven dat de retourwaarde van een functie van een specifiek type of null kan zijn.
- Void-functies Het type `void` is geïntroduceerd voor functies die niets retourneren.
- Constante zichtbaarheid van de klasse Je kunt klasseconstanten nu definiëren als openbaar, privé of beveiligd.
- Iterable pseudo-type Voer het iterable-type in voor de parameters en de retourtypen van de functies.
PHP 7.2 (Uitgebracht in november 2017)
- Libsodium Deze bibliotheek voor moderne en veilige cryptografie is nu standaard inbegrepen.
- Typeverbeteringen Het type "object" is toegevoegd en het gebruik van abstracte typen in parametertypen en retourtypedeclaraties is nu mogelijk.
PHP 7.3 (Uitgebracht in december 2018)
- Achterliggende komma's in functieaanroepen Het is toegestaan om bij functieaanroepen een afsluitende komma te gebruiken.
- snelheidsverbetering van JSON-code De prestaties van de functies json_encode() en json_decode() zijn verbeterd.
- GC-verbeteringen : Introduceert verbeteringen aan de garbage collector, wat resulteert in een lager geheugenverbruik.
PHP 7.4 (Uitgebracht in november 2019)
- Pijlfuncties Deze functie maakt het mogelijk om anonieme functies op een beknoptere manier te creëren.
- Getypte eigenschappen Klasse-eigenschappen kunnen nu een gedeclareerd type hebben.
- Uitpakken binnen arrays Deze functie maakt het mogelijk om arrays binnen andere arrays uit te pakken.
- Zwakke referenties Hiermee kunnen verwijzingen naar objecten behouden blijven zonder te voorkomen dat ze door de garbage collector worden verwijderd.
PHP 8 (uitgebracht in 2020)
PHP versie 8 bracht een aantal spannende nieuwe functies met zich mee, zoals Just-In-Time (JIT) compilatie, wat de prestaties verder verbetert. Ook werden er union-datatypen, match-expressies, de nullsafe-operator, benoemde argumenten en attributen toegevoegd, naast vele andere functies.
En waar blijft versie 6?
De PHP 6-versie heeft wel degelijk als project bestaan, maar is nooit officieel uitgebracht Het belangrijkste doel van PHP 6 was het bieden van native ondersteuning voor Unicode, een standaard die tekstverwerking in elke taal ter wereld mogelijk maakt.
De ontwikkelaars stuitten echter op een aantal problemen. problemen tijdens de ontwikkeling Het implementeren van volledige Unicode-ondersteuning in de PHP-kern bleek een veel grotere uitdaging dan verwacht. Bovendien was de prestatie van de previewversie van PHP 6 met Unicode aanzienlijk trager.
Vanwege deze moeilijkheden en de vertraging in de ontwikkeling werd het PHP 6-project uiteindelijk stopgezet. De ontwikkelaars besloten om het cijfer 6 weg te laten bij de naamgeving van de volgende belangrijke PHP-versie om verwarring met het mislukte PHP 6-project te voorkomen. Na PHP 5.6 was de volgende belangrijke versie daarom PHP 7.0.
PHP 7 bevatte veel van de functies die voor PHP 6 gepland waren, maar bood geen native Unicode-ondersteuning in de taalkern. In plaats daarvan richtte PHP 7 zich op het verbeteren van de prestaties en het toevoegen van nieuwe functies aan de taal.
Laten we het over de prestaties hebben: is een upgrade de moeite waard?
De evolutie van de programmeertaal heeft niet alleen nieuwe functionaliteit gebracht, maar er is ook speciale nadruk gelegd op het verbeteren van de prestaties bij elke versie:
- PHP/FI 2.0 - Laag Het was niet geoptimaliseerd voor prestaties, aangezien de nadruk vooral lag op formulierfunctionaliteit en interactie met databases.
- PHP 3 - Verbeterd ten opzichte van PHP/FI 2.0. De herziening van de PHP-engine heeft geleid tot een verbetering van de prestaties en efficiëntie.
- PHP 4 - Verbeterd ten opzichte van PHP 3. De introductie van de Zend-engine zorgde voor een verdere prestatieverbetering.
- PHP 5.0 - Vergelijkbaar met PHP 4. Hoewel het aanzienlijke verbeteringen bevatte op het gebied van objectgeoriënteerd programmeren en XML-ondersteuning, waren de prestaties vergelijkbaar met PHP 4.
- PHP 5.1 - 5.6 - Verbeteringen met elke kleine release, met name op het gebied van prestatieoptimalisaties en verbeteringen in de garbage collection.
- PHP 7.0 - Aanzienlijk verbeterd ten opzichte van PHP 5.X, dankzij de introductie van Zend Engine 3. De prestaties van PHP 7.0 kunnen voor veel toepassingen twee tot drie keer zo goed zijn als die van PHP 5.6.
- PHP 7.1 - 7.4 Elke kleine versie bracht prestatieverbeteringen met zich mee, hoewel niet zo drastisch als de sprong van PHP 5.6 naar PHP 7.0.
- PHP 8.0 - Verbeterd ten opzichte van PHP 7.4. De toevoeging van Just-In-Time (JIT) compilatie kan in bepaalde gevallen de prestaties verbeteren, hoewel de verbetering voor typische webapplicaties mogelijk niet significant is.
En de beveiliging? Wat kunt u daarover zeggen?
PHP/FI 2.0 - PHP 3
- In deze vroege versies was beveiliging geen prioriteit en waren veel beveiligingsfuncties niet opgenomen.
PHP4
- PHP 4 introduceerde safe_mode, dat bedoeld was om bepaalde soorten aanvallen te voorkomen, maar uiteindelijk als ineffectief werd beschouwd en in PHP 5.4 werd afgekeurd en verwijderd.
PHP5
PHP 5 introduceerde een aantal beveiligingsverbeteringen:
- Magic Quotes: Geïntroduceerd om SQL-injectieaanvallen te voorkomen, maar werd bekritiseerd vanwege inconsistent gedrag en werd uiteindelijk standaard uitgeschakeld in PHP 5.3 en verwijderd in PHP 5.4.
- Verbeteringen in foutafhandeling: PHP 5 introduceerde uitzonderingen, die de foutafhandeling verbeteren en kunnen helpen voorkomen dat gevoelige informatie openbaar wordt gemaakt.
- PDO (PHP Data Objects): Geïntroduceerd in PHP 5.1, biedt het een interface voor toegang tot databases, inclusief voorbereide query's, wat kan helpen SQL-injectie te voorkomen.
PHP 5.2
- Invoerfilter: PHP 5.2 introduceerde de filter-extensie waarmee invoergegevens op een veilige en consistente manier kunnen worden gevalideerd en gefilterd.
PHP 5.3
- PHAR (PHP Archive): PHP 5.3 introduceerde ondersteuning voor PHAR, een manier om complete PHP-applicaties in één archief te verpakken. Hoewel dit op zich geen beveiligingsverbetering is, bevat PHAR verschillende beveiligingsmaatregelen om aanvallen te voorkomen, zoals de mogelijkheid om digitale handtekeningen te valideren.
PHP 5.6
- Verbetering van de SSL/TLS-beveiliging: PHP 5.6 introduceerde ondersteuning voor certificaten voor ondertekening met publieke sleutels en verbeteringen aan de standaard SSL/TLS-instellingen.
PHP 7
PHP 7 heeft diverse verouderde en mogelijk onveilige functies en mogelijkheden uitgeschakeld of verwijderd:
- Diverse onveilige hashfuncties, zoals crypt() en hash(), zijn verwijderd.
- Automatische deserialisatie is uitgeschakeld om kwetsbaarheden voor objectinjectie te voorkomen.
- Typedeclaratie en retourtypedeclaratie zijn geïntroduceerd om typefouten te voorkomen die misbruikt zouden kunnen worden.
PHP 7.2
- Verbetering van de wachtwoordbeveiliging: PHP 7.2 introduceerde de functie password_hash() met ondersteuning voor Argon2, een veiliger wachtwoordhashalgoritme.
PHP 8
PHP 8 introduceerde niet veel nieuwe beveiligingsfuncties, maar zette de trend van PHP 7 voort om verouderde en potentieel onveilige functies te verwijderen of uit te schakelen.
Conclusie
Upgraden naar de nieuwste versie van PHP biedt vaak de volgende voordelen: diverse voordelen Ten eerste bevatten updates vaak het volgende: prestatieverbeteringen , waardoor uw webapplicaties sneller kunnen werken. Ten tweede bevatten nieuwere versies vaak nieuwe functies Dat kan code efficiënter maken en het schrijven en onderhouden ervan vergemakkelijken. Ten derde bevatten nieuwere versies van PHP vaak beveiligingsverbeteringen die bescherm uw applicatie bescherming tegen aanvallen en kwetsbaarheden.
Het is echter ook belangrijk om te weten dat een upgrade naar een nieuwe versie van PHP problemen kan veroorzaken. uitdagingen Bestaande code moet mogelijk worden herzien of geherstructureerd om nieuwe functies te ondersteunen of om functies te vermijden die zijn uitgeschakeld of verwijderd. In beide gevallen is het bijwerken van PHP een essentieel onderdeel van het draaien van een applicatie. veilige, krachtige webapplicatie .



