PHP 8.2 forritunarmálsútgáfa

Eftir eins árs þróun var útgáfa PHP 8.2 forritunarmálsins kynnt. Nýja útibúið inniheldur röð nýrra eiginleika, auk nokkurra breytinga sem brjóta eindrægni.

Helstu endurbætur í PHP 8.2:

  • Bætti við möguleikanum á að merkja bekk sem skrifvarinn. Eiginleikar í slíkum flokkum er aðeins hægt að stilla einu sinni, eftir það er ekki hægt að breyta þeim. Áður var hægt að merkja einstaka bekkjareiginleika sem skrifvarið en nú er hægt að virkja þessa stillingu fyrir alla bekkjareignir í einu. Með því að tilgreina „skrifvarinn“ fánann á bekkjarstigi kemur einnig í veg fyrir að eiginleikar verði bættir á virkan hátt við bekkinn. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'rangt'; // Villa: Get ekki búið til kraftmikla eign Post::$unknown
  • Bætt við aðskildum gerðum „true“, „false“ og „null“, sem geta aðeins tekið eitt gilt gildi og eru til dæmis notuð til að skila falli með villulokunarfána eða tómu gildi. Áður fyrr var aðeins hægt að nota „true“, „false“ og „null“ í tengslum við aðrar tegundir (til dæmis „streng|false“), en nú er hægt að nota þau sérstaklega: fall alltafFalse(): false { return false ; }
  • Veitir getu til að sía viðkvæmar færibreytur í stafla rekja úttakinu meðan á villu stendur. Það getur verið nauðsynlegt að skera út ákveðnar upplýsingar þegar upplýsingar um villur sem eiga sér stað eru sjálfkrafa sendar til þjónustu þriðja aðila sem rekja vandamál og upplýsa þróunaraðila um þau. Til dæmis er hægt að útiloka færibreytur sem innihalda notendanöfn, lykilorð og umhverfisbreytur frá rakningu. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Villa'); } test('foo', 'lykilorð', 'baz'); Banvæn villa: Uncaught Undantekning: Villa í test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} hent í test.php á línu 8
  • Leyft að skilgreina fasta í eiginleikum (eiginleiki, kerfi til að endurnýta kóða). Hægt er að nálgast fastar sem eru skilgreindar í eiginleikum í gegnum flokkinn sem notar eiginleikann (en ekki í gegnum eiginleikanafnið). eiginleiki Foo { public const CONSTANT = 1; public function bar(): int { skila sjálfu sér::CONSTANT; // Banvæn villa } } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1
  • Bætti við hæfileikanum til að tilgreina tegundir í sundurliðuðu eðlilegu formi (DNF, Disjunctive Normal Form), sem gerir þér kleift að sameina sameiningu tegunda (safn af tveimur eða fleiri gerðum) og skurðpunktum tegunda (tegundir þar sem gildi falla undir nokkrar gerðum samtímis). class Foo { public function bar((A&B)|null $entity) { if ($entity === null) { return null; } skila $einingu; } }
  • Ný viðbót „Random“ hefur verið lögð til með föllum og flokkum til að búa til gervi-handahófskenndar tölur og raðir. Einingin býður upp á hlutbundið viðmót, gerir þér kleift að velja mismunandi vélar til að búa til gervi-handahófskenndar tölur, þar á meðal þær sem henta til notkunar í dulritun, og býður upp á hjálparaðgerðir, til dæmis til að blanda saman fylkjum og strengjum af handahófi, velja tilviljanakennda fylkislykla, samtímis notkun nokkurra rafala með þínu eigin sjálfstæðu ríki. $rng = $er_framleiðsla? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = nýr Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • Innleidd staðbundin óháð tilviksbreyting. Aðgerðir eins og strtolower() og strtoupper() umbreyta nú alltaf hástöfum stafa á ASCII sviðinu eins og þær væru stilltar á "C" staðbundna.
  • Bætt við nýjum aðgerðum: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
  • Bætt við nýjum aðferðum: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Hæfni til að búa til eiginleika í flokki hefur verið úrelt. Í PHP 9.0 mun aðgangur að eiginleikum sem ekki eru upphaflega skilgreindir í bekknum leiða til villu (ErrorException). Klassar sem bjóða upp á __get og __set aðferðir til að búa til eiginleika, eða kraftmikla eiginleika í stdClass munu halda áfram að virka án breytinga, aðeins óbein vinna með eiginleikum sem ekki eru til verður studd til að vernda þróunaraðilann gegn földum villum. Til að varðveita vinnu gamla kóðans er „#[AllowDynamicProperties]“ eigindin lögð til, sem gerir kleift að nota kraftmikla eiginleika.
  • Hæfni til að skipta út breytugildum í strengi með því að nota tjáningarnar „${var}“ og ${(var)} hefur verið úrelt. Stuðningur við almennt notaðar „{$var}“ og „$var“ skipti hefur verið haldið. Til dæmis: "Halló {$world}"; OK "Halló $heimur"; OK "Halló ${heimur}"; Úrelt: Notkun ${} í strengjum er úrelt
  • Úreltir að hluta til studdir hringingartæki sem hægt er að hringja í gegnum "call_user_func($callable)" en styðja ekki kall í formi "$callable()": "self::method" "parent::method" "static" ::aðferð " ["sjálf", "aðferð"] ["foreldri", "aðferð"] ["static", "aðferð"] ["Foo", "Bar::aðferð"] [nýtt Foo, "Bar: :aðferð" ]
  • Tilskipunin error_log_mode hefur verið bætt við stillingarnar, sem gerir þér kleift að ákvarða aðgangshaminn að villuskránni.

Heimild: opennet.ru

Bæta við athugasemd