PHP 7.4 programmeringsspråk utgivelse

Etter et år med utvikling presentert utgivelse av programmeringsspråk PHP 7.4. Den nye grenen inkluderer en rekke nye funksjoner, samt flere endringer som bryter kompatibiliteten.

Nøkkel forbedringer i PHP 7.4:

  • Innskrevne egenskaper - klasseegenskaper kan nå inkludere typedeklarasjoner, for eksempel:

    klasse Bruker {
    offentlig int $id;
    offentlig streng $navn;
    }

  • Forkortet syntaks for å definere funksjoner "fn(parameter_list) => expr" med omfangsbinding etter verdi. For eksempel, "fn($x) => $x + $y" er analogt med "$fn2 = funksjon ($x) bruk ($y) {retur $x + $y;}");
  • Stenografi-oppdragsoperatør "??=" som kan brukes til å definere en standardverdi ("a ??= b" ligner på "a = a ?? b", hvis "a" er definert, lagres verdien, og hvis den ikke er definert er tildelt verdien "b" );
  • Begrenset mulighet bevare arvehierarkiet av typer i avledede returtyper, eller muligheten til å reversere hierarkiet til de opprinnelige typene i avledede argumenttyper (kovarians returtype og argumenttype motvariasjon). Følgende konstruksjoner kan nå brukes i PHP:

    klasse A {}
    klasse B utvider A {}

    klasse Produsent {
    offentlig funksjonsmetode(): A {}
    }
    klasse ChildProducer utvider Producer {
    offentlig funksjonsmetode(): B {}
    }

  • Pakker ut operatør i arrays "...$var", tillater utføre erstatning av eksisterende matriser når du definerer en ny matrise;

    $parts = ['eple', 'pære'];
    $fruits = ['banan', 'oransje', ...$deler, 'vannmelon'];
    // ['banan', 'oransje', 'eple', 'pære', 'vannmelon'];

  • Opportunity visuell representasjon av store tall med skilletegn i numeriske bokstaver (1_000_000_00);
  • Støtte svake ledd, som lar deg beholde en referanse til et objekt, men ikke blokkerer søppelsamleren fra å slette det tilknyttede objektet;
  • Ny mekanisme objektserialisering (en kombinasjon av Serializable og __sleep()/__wakeup()), som erstattet Serializable-grensesnittet, som vil bli avviklet;

    // Returnerer en matrise som inneholder alle tilstandene til objektet;
    offentlig funksjon __serialize(): array;

    // Gjenoppretter tilstanden til et objekt fra en matrise
    offentlig funksjon __unserialize(array $data): void;

  • Tillatt å kaste unntak fra en metode __toString();
  • Lagt til støtte for forhåndsinnlasting av objektkodebufferen. Lagt til parameter for innstilling
    opcache.preload, der du kan spesifisere et PHP-skript som skal kompileres og kjøres når serveren starter. Dette skriptet kan laste opkoden til andre filer gjennom deres direkte inkludering eller ved å bruke funksjonen opcache_compile_file();

  • La til crc32c-funksjonen til Hash-utvidelsen for å beregne kontrollsummer ved å bruke Castagnoli-polynomet;
  • Lagt til støtte til password_hash()-funksjonen for passordhash-metodene argon2i og argin2id, i implementeringen av Sodium-biblioteket, hvis PHP er bygget uten libargon;
  • Lagt til funksjon mb_str_split(), lik str_split(), men opererer ikke med bytes, men med tegnposisjoner i en multi-byte streng;
  • Strip_tags()-funksjonen har nå muligheten til å sende en matrise med tag-navn, dvs. i stedet for strip_tags($str, '') kan du nå spesifisere strip_tags($str, ['a', 'p']);
  • proc_open() lar operander listes opp i en matrise i stedet for en streng for å kjøre, og den gir også trådomdirigering og støtte for en nullfilbeskrivelse;

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

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

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

  • Firebird/Interbase, Recode og WDDX utvidelser er ekskludert fra den grunnleggende distribusjonen. Disse utvidelsene distribueres nå gjennom PECL;
  • Overført til kategori utdatert funksjoner som nestede ternære operatorer uten parentes, tilgang til array-elementer og strenger ved hjelp av krøllete klammer (“$var{$idx}”), is_real()-funksjonen og casting til real, ved å bruke det overordnede nøkkelordet uten en overordnet klasse, parameter allow_url_include-konfigurasjoner , ved å bruke array_key_exists() på objekter.

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

    En advarsel om bruk av en foreldet funksjon er gitt ved forsøk på å behandle feil symboler i funksjoner
    base_convert(), bindec(), octdec() og hexdec(), og når du spesifiserer et ikke-strengmønster i mb_ereg_replace().

Kilde: opennet.ru

Legg til en kommentar