PHP 7.4 programmeringsspråk release

Efter ett år av utveckling presenteras programspråk release PHP 7.4. Den nya grenen innehåller en rad nya funktioner, samt flera ändringar som bryter kompatibiliteten.

Nyckel förbättringar i PHP 7.4:

  • Angivna egenskaper - klassegenskaper kan nu inkludera typdeklarationer, till exempel:

    klass Användare {
    public int $id;
    offentlig sträng $name;
    }

  • Förkortad syntax för att definiera funktioner "fn(parameter_list) => expr" med scope-bindning med värde. Till exempel, "fn($x) => $x + $y" är analog med "$fn2 = funktion ($x) använd ($y) {retur $x + $y;}");
  • Stenografisk uppdragsoperatör "??=" som kan användas för att definiera ett standardvärde ("a ??= b" liknar "a = a ?? b", om "a" är definierat lagras dess värde, och om det inte är definierat tilldelas värdet "b" );
  • Begränsad möjlighet bevara arvshierarkin av typer i härledda returtyper, eller möjligheten att vända hierarkin för de ursprungliga typerna i härledda argumenttyper (kovarians returtyp och argumenttyp kontravarians). Följande konstruktioner kan nu användas i PHP:

    klass A {}
    klass B förlänger A {}

    klass producent {
    public function method(): A {}
    }
    class ChildProducer utökar Producer {
    public function method(): B {}
    }

  • Packar upp operatören inuti arrayerna "...$var", tillåter utföra substitution av befintliga arrayer när en ny array definieras;

    $parts = ['äpple', 'päron'];
    $fruits = ['banan', 'apelsin', …$delar, 'vattenmelon'];
    // ['banan', 'apelsin', 'äpple', 'päron', 'vattenmelon'];

  • Möjlighet visuell representation av stora tal med avgränsare i numeriska bokstaver (1_000_000_00);
  • Support svaga länkar, som låter dig behålla en referens till ett objekt, men inte blockerar sopsamlaren från att ta bort det associerade objektet;
  • Nytt mekanism objektserialisering (en kombination av Serializable och __sleep()/__wakeup()), som ersatte gränssnittet Serializable, som kommer att fasas ut;

    // Returnerar en array som innehåller alla tillstånd för objektet;
    offentlig funktion __serialize(): array;

    // Återställer tillståndet för ett objekt från en array
    offentlig funktion __unserialize(array $data): void;

  • Tillåtet att kasta undantag från en metod __att stränga();
  • Lade till stöd för förladdning av objektkodscachen. Tillagd parameter för inställning
    opcache.preload, genom vilket du kan ange ett PHP-skript som kommer att kompileras och köras när servern startar. Detta skript kan ladda opcoden för andra filer genom deras direkta inkludering eller genom att använda funktionen opcache_compile_file();

  • Lade till crc32c-funktionen till Hash-tillägget för att beräkna kontrollsummor med hjälp av Castagnoli-polynomet;
  • Lade till stöd för password_hash()-funktionen för lösenordshasningsmetoderna argon2i och argin2id, i implementeringen av Sodium-biblioteket, om PHP är byggt utan libargon;
  • Lade till funktionen mb_str_split(), liknande str_split(), men fungerar inte med bytes utan med teckenpositioner i en flerbytesträng;
  • Funktionen strip_tags() har nu möjlighet att skicka en array med taggnamn, dvs. istället för strip_tags($str, ' ') kan du nu ange strip_tags($str, ['a', 'p']);
  • proc_open() tillåter att operander listas i en array snarare än en sträng att köra, och det ger också trådomdirigering och stöd för en nullfildeskriptor;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // Gillar 2>&1 i skalet
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // som 2>/dev/null eller 2>nul i skalet
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode och WDDX-tillägg är exkluderade från den grundläggande distributionen. Dessa tillägg distribueras nu via PECL;
  • Överförd till kategori föråldrad funktioner som kapslade ternära operatorer utan parentes, åtkomst till arrayelement och strängar med hjälp av krulliga klammerparenteser ("$var{$idx}"), funktionen is_real() och casting till real, med hjälp av det överordnade nyckelordet utan en överordnad klass, parameter allow_url_include-konfigurationer , med hjälp av array_key_exists() på objekt.

    Funktionerna get_magic_quotes_gpc(), get_magic_quotes_runtime() och
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    En varning om användningen av en föråldrad funktion har tillhandahållits vid försök att bearbeta felaktiga symboler i funktioner
    base_convert(), bindec(), octdec() och hexdec(), och när man anger ett icke-strängmönster i mb_ereg_replace().

Källa: opennet.ru

Lägg en kommentar