PHP 7.4 programmeringsspråk release

Efter ett år av utveckling presenteras programspråk release PHP 7.4Den nya grenen innehåller ett antal nya funktioner, såväl som flera kompatibilitetsbrytande förändringar.

Nyckel förbättringar i PHP 7.4:

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

    klassAnvändare {
    offentlig int $id;
    offentlig sträng $namn;
    }

  • Förkortad funktionsdefinitionssyntax "fn(parameter_list) => expr" med scope-bindning efter värde. Till exempel är "fn($x) => $x + $y" analogt med "$fn2 = function ($x) use ($y) {return $x + $y;}");
  • Stenografisk tilldelningsoperator "??=", vilket kan användas för att definiera ett standardvärde ("a ??= b" liknar "a = a ?? b", om "a" är definierat bevaras dess värde, och om det inte är definierat tilldelas värdet för "b");
  • Begränsad möjlighet bevarandet av arvshierarkin för typer i de typer av returvärden som härrör från dem eller möjligheten att omvandla hierarkin för ursprungliga typer till motsatsen i de härledda typerna av argument (kovarians returtyp och argumenttypkontravarians). Följande konstruktioner kan nu användas i PHP:

    klass A
    klass B utökar A {}

    klass Producent {
    public function-metod(): A {}
    }
    klass ChildProducer utökar Producer {
    public function-metod(): B {}
    }

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

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

  • Möjlighet visuell presentation av stora tal med avgränsare i numeriska literaler (1_000_000_00);
  • Support svaga länkar, som låter dig bevara en referens till ett objekt, men inte blockerar borttagningen av det associerade objektet av sophämtaren;
  • Nytt mekanism objektserialisering (en kombination av Serializable och __sleep()/__wakeup()), som ersätter Serializable-gränssnittet, vilket kommer att förklaras föråldrat;

    // Returnerar en array som innehåller objektets alla tillstånd;
    offentlig funktion __serialisera(): array;

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

  • Tillåtet att kasta undantag från metoden __att stränga();
  • Lade till stöd för förladdning av objektkodscachen. En parameter har lagts till för konfiguration.
    opcache.preload, genom vilket du kan ange ett PHP-skript som ska kompileras och startas när servern startar. Detta skript kan ladda opkoden för andra filer genom att de inkluderas direkt eller genom att använda funktionen opcache_compile_file();
  • Hash-tillägget har en ny crc32c-funktion för att beräkna kontrollsummor med hjälp av Castagnoli-polynomet;
  • Funktionen password_hash() har uppdaterats för att stödja lösenordshashningsmetoderna argon2i och argin2id i Sodium-biblioteksimplementeringen om PHP byggs utan libargon;
  • Lade till funktionen mb_str_split(), liknande str_split(), men arbetar inte på byte utan på teckenpositioner i en sträng med flera byte;
  • Funktionen strip_tags() har nu möjligheten att skicka en array med taggnamn, d.v.s. istället för strip_tags($str, ' ') kan du nu ange strip_tags($str, ['a', 'p']);
  • proc_open() tillåter lista av operander i en array istället för att ange en sträng som ska köras, och implementerar även möjligheten att omdirigera strömmar och stödja en null-fildeskriptor;

    proc_open(['php', '-r', 'echo "Hej världen\n";'], $descriptors, $pipes);

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

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

  • Firebird/Interbase, Recode och WDDX-tilläggen har tagits bort från basdistributionen. Dessa tillägg distribueras nu via PECL;
  • Överförd till kategorin föråldrad Funktioner som kapslade ternära operatorer utan parenteser, åtkomst till arrayelement och strängar med hjälp av klammerparenteser ("$var{$idx}"), funktionen is_real() och konvertering till real, användning av nyckelordet parent utan en förälderklass, konfigurationsalternativet allow_url_include och användning av array_key_exists() på objekt.

    Funktionerna get_magic_quotes_gpc(), get_magic_quotes_runtime() har föråldrats.
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Varning om användning av föråldrad funktion vid försök att bearbeta ogiltiga tecken i funktioner har tillhandahållits.
    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