de eerste bètaversie van de nieuwe versie van de programmeertaal PHP 8. De release staat gepland voor 26 november. Tegelijkertijd zijn correcties voor de versies PHP 7.4.9, 7.3.21 en
7.2.33 uitgebracht, waarin bestaande fouten en kwetsbaarheden zijn verholpen.
Belangrijkste PHP 8:
- , waarvan het gebruik de prestaties zal verbeteren.
- genaamde functie-argumenten, waarmee waarden aan functies kunnen worden doorgegeven op basis van hun namen. Hierdoor kunnen argumenten in willekeurige volgorde worden doorgegeven en kunnen optionele argumenten worden gedefinieerd. Bijvoorbeeld, “array_fill(start_index: 0, num: 100, value: 50)”.
- Bij het aanroepen van methoden om de operator “?” te gebruiken, die het mogelijk maakt om de aanroep alleen te initiëren als de methode aanwezig is. Dit helpt onnodige controles op het retourneren van een waarde “null” te vermijden. Bijvoorbeeld, “$dateAsString = $booking->getStartDate()?->asDateTimeString()”;
- Ondersteuning , die collecties van twee of meer typen definiëren (bijvoorbeeld “public function foo(Foo|Bar $input): int|float;”).
- Ondersteuning (annotaties), waarmee metadata (bijvoorbeeld type-informatie) aan klassen kunnen worden gekoppeld zonder het gebruik van Docblock-syntaxis.
- Ondersteuning voor expressies , die in tegenstelling tot switch waarden kunnen retourneren, combinatie van voorwaarden ondersteunen, strikte typevergelijkingen gebruiken en geen “break” vereisen.
$result = match($input) {
0 => “hello”,
‘1’, ‘2’, ‘3’ => “world”,
}; - voor de definitie van klassen, waarmee de definitie van de constructor en eigenschappen kan worden samengevoegd.
- Een nieuw type retourwaarden — .
- Een nieuw type — , dat kan worden gebruikt om een functie parameters van verschillende types te laten aannemen.
- De uitdrukking voor het afhandelen van uitzonderingen.
- voor het maken van objecten die kunnen worden opgegeven bij garbage collection (bijvoorbeeld voor het opslaan van optionele caches).
- gebruik van de expressie “::class” voor objecten (vergelijkbaar met de aanroep van get_class()).
- de definitie in de catch-blok van uitzonderingen die niet aan variabelen zijn gebonden.
- het achterlaten van een komma na het laatste element in de parameterlijst van een functie.
- De nieuwe interface voor het identificeren van elke stringtype of gegevens die in een string kunnen worden omgezet (voor welke de methode __toString() beschikbaar is).
- Nieuwe functie , een vereenvoudigd alternatief voor strpos om het voorkomen van een substring te bepalen, en ook de functies str_starts_with() en str_ends_with() voor het controleren van overeenkomsten aan het begin en einde van een string.
- De functie is toegevoegd , voert de delingsoperatie uit zonder een foutmelding weer te geven in het geval van deling door nul.
- de logica voor het samenvoegen van strings. Bijvoorbeeld, de uitdrukking ‘echo «sum: » . $a + $b’ werd eerder geïnterpreteerd als ‘echo («sum: » . $a) + $b’, terwijl deze in PHP 8 zal worden behandeld als ‘echo «sum: » . ($a + $b)’.
- de controle op wiskundige en bitbewerkingen, bijvoorbeeld de uitdrukkingen «[] % [42]» en «$object + 4» zullen een fout veroorzaken.
- stabiel sorteeralgoritme, waarin de volgorde van gelijke waarden behouden blijft bij verschillende uitvoeringen.
Bron: opennet.ru
