PHP 8.2 programazio-lengoaia kaleratzea

Urtebeteko garapenaren ondoren, PHP 8.2 programazio-lengoaiaren bertsioa aurkeztu zen. Adar berriak ezaugarri berri batzuk biltzen ditu, baita bateragarritasuna hausten duten hainbat aldaketa ere.

Funtsezko hobekuntzak PHP 8.2-n:

  • Klase bat irakurtzeko soilik gisa markatzeko gaitasuna gehitu da. Horrelako klaseetako propietateak behin bakarrik ezar daitezke, eta ondoren ezin dira aldatu. Lehen, klase-propietate indibidualak irakurtzeko soilik markatu zitezkeen, baina orain modu hau aldi berean gaitu dezakezu klase-propietate guztietarako. Klase mailan "irakurtzeko soilik" marka zehazteak ere blokeatzen du propietateak klasean dinamikoki gehitzea. irakurtzeko soilik Argitalpena { public function __construct( kate publikoa $izenburua, egile publikoa $egilea, ) {} } $argitalpena = argitalpen berria (/* … */); $post->unknown = 'okerra'; // Errorea: Ezin da propietate dinamikoa sortu Post::$unknown
  • "Egia", "gezurra" eta "null" mota bereiziak gehitu dira, baliozko balio bakarra har dezaketenak eta, adibidez, errore-amaierako bandera edo balio huts bat duen funtzio bat itzultzeko erabiltzen direnak. Lehen, "true", "false" eta "null" beste mota batzuekin batera bakarrik erabil zitezkeen (adibidez, "katea|false"), baina orain bereiz erabil daitezke: function alwaysFalse(): false { return false ; }
  • Pila-arrastoaren irteeran parametro sentikorrak iragazteko gaitasuna ematen du errore batean. Zenbait informazio moztea beharrezkoa izan daiteke gertatzen diren akatsei buruzko informazioa automatikoki arazoen jarraipena egiten duten hirugarrenen zerbitzuetara bidaltzen denean eta garatzaileei horien berri ematen dietenean. Adibidez, erabiltzaile-izenak, pasahitzak eta ingurune-aldagaiak barne hartzen dituzten parametroak bazter ditzakezu trazatzetik. funtzio proba( $foo, #[\SensitiveParameter] $pasahitza, $baz ) { throw new Exception('Errorea'); } test('foo', 'pasahitza', 'baz'); Errore lazgarria: Atzeman gabeko Salbuespena: Errorea test.php:8 Stack-en arrastoa: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php-n botata 8. lerroan
  • Ezaugarrietan konstanteak definitzeko baimena (ezaugarria, kodea berrerabiltzeko mekanismoa). Ezaugarri batean definitutako konstanteak ezaugarria erabiltzen duen klasearen bidez atzi daitezke (baina ez ezaugarriaren izenaren bidez). ezaugarri Foo { public const CONSTANT = 1; funtzio publikoaren barra (): int { return self:: CONSTANT; // Errore larria } } class Bar { erabili Foo; } var_dump(Bar::CONSTANT); // 1
  • Forma normal disjuntiboan motak zehazteko gaitasuna gehitu da (DNF, Forma Normal Disjuntiboa), motak (bi motako edo gehiagoko bildumak) eta moten elkargunea (balioak hainbaten azpian dauden motak) konbinatzeko aukera ematen duena. motak aldi berean). class Foo { funtzio publikoko barra ((A&B)|null $entitatea) { if ($entity === null) { return null; } $entity itzuli; }}
  • "Ausazko" luzapen berri bat proposatu da sasi-ausazko zenbaki eta segidak sortzeko funtzio eta klaseekin. Moduluak objektuetara zuzendutako interfazea eskaintzen du, sasi-ausazko zenbakiak sortzeko motor desberdinak hautatzeko aukera ematen du, kriptografian erabiltzeko egokiak barne, eta funtzio osagarriak eskaintzen ditu, adibidez, ausaz array eta kateak nahasteko, ausazko array gakoak hautatzeko, Hainbat sorgailu aldi berean erabiltzea zure egoera independentearekin. $rng = $produkzioa da ? Berria Random\Engine\Secure(): Berria Random\Engine\Mt19937(1234); $ausazko = berria Ausazko\Ausazko ($rng); $ausazko->shuffleString('foobar');
  • Inplementatu da lokaletik independentea den maiuskulak bihurtzea. strtolower() eta strtoupper() bezalako funtzioek orain beti bihurtzen dituzte ASCII barrutian karaktereen maiuskulak eta minuskulak "C" lokalean ezarrita balego bezala.
  • Funtzio berriak gehitu dira: 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.
  • Metodo berriak gehitu dira: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Klase batean propietateak dinamikoki sortzeko gaitasuna zaharkituta geratu da. PHP 9.0-n, hasiera batean klasean definituta ez dauden propietateak atzitzeak errore bat eragingo du (ErrorException). Propietateak sortzeko __get eta __set metodoak edo stdClass-en propietate dinamikoak eskaintzen dituzten klaseek aldaketarik gabe funtzionatzen jarraituko dute, existitzen ez diren propietateekin lan inplizitua soilik onartuko da garatzailea ezkutuko akatsetatik babesteko. Kode zaharraren lana gordetzeko, β€œ#[AllowDynamicProperties]” atributua proposatzen da, propietate dinamikoak erabiltzeko aukera emanez.
  • "${var}" eta ${(var)} esamoldeak erabiliz aldagai-balioak kateetan ordezkatzeko gaitasuna zaharkituta geratu da. "{$var}" eta "$var" ordezkapenen euskarria mantendu da. Adibidez: "Kaixo {$mundua}"; Ados "Kaixo $mundua"; Ados "Kaixo ${world}"; Zaharkituta: ${} kateetan erabiltzea zaharkituta dago
  • "call_user_func($callable)" bidez dei daitezkeen partzialki onartzen diren deigarriak zaharkituta daude, baina "$callable()" moduan deitzea onartzen ez dutenak: "self::method" "parent::method" "static" ::method " ["Norbera", "metodoa"] ["gurasoa", "metodoa"] ["estatikoa", "metodoa"] ["Foo", "Bar::metodoa"] [Foo berria, "Bar: :metodoa" ]
  • Error_log_mode direktiba ezarpenetara gehitu da, erroreen erregistrorako sarbide-modua zehazteko.

Iturria: opennet.ru

Gehitu iruzkin berria