Famoahana ny fiteny fandaharana PHP 8.2

Taorian'ny taonan'ny fampandrosoana dia naseho ny famoahana ny fiteny fandaharana PHP 8.2. Ny sampana vaovao dia ahitana andiana endri-javatra vaovao, ary koa fiovana maromaro izay manapaka ny fifanarahana.

Fanatsarana lehibe amin'ny PHP 8.2:

  • Nampiana ny fahafahana hanamarika kilasy ho vakiana fotsiny. Ny fananana ao amin'ny kilasy toy izany dia azo apetraka indray mandeha ihany, aorian'izay dia tsy azo ovaina. Teo aloha, ny fananan'ny kilasy tsirairay dia azo nasiana marika vakiana fotsiny, fa izao dia azonao atao indray mandeha io fomba io ho an'ny fananana kilasy rehetra. Ny famaritana ny saina "vakiana fotsiny" eo amin'ny sehatry ny kilasy dia manakana ny fanampim-pananana mavitrika amin'ny kilasy. class read-only Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'diso'; // Error: Tsy afaka mamorona fananana mavitrika Post::$unknown
  • Nampiana karazana misaraka "marina", "diso" ary "null", izay tsy afaka maka sanda manan-kery tokana ary ampiasaina, ohatra, mba hamerenana asa misy saina fampitsaharana fahadisoana na sanda foana. Teo aloha, ny "marina", "diso" ary "null" dia tsy azo ampiasaina afa-tsy miaraka amin'ny karazana hafa (ohatra, "tady|diso"), fa amin'izao fotoana izao dia azo ampiasaina misaraka izy ireo: function alwaysFalse(): false { return false ; }
  • Manome fahafahana hanivana ny firafitry ny saro-pady amin'ny fivoahana trace stack amin'ny fotoana misy hadisoana. Mety ilaina ny manapaka ny fampahalalana sasany rehefa alefa ho azy any amin'ireo tolotra hafa manara-maso ny olana sy mampahafantatra ny mpamorona momba izany ny fampahalalana momba ny hadisoana mitranga. Ohatra, azonao atao ny manilika ireo masontsivana amin'ny trace izay misy solon'anarana, tenimiafina ary fari-piainan'ny tontolo iainana. asa fitsapana($foo, #[\SensitiveParameter] $password, $baz) { manipy Exception vaovao('Error'); } test('foo', 'password', 'baz'); Fahadisoana mahafaty: tsy tratra Exception: Error ao amin'ny test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} atsipy ao amin'ny test.php online 8
  • Avela hamaritana ny tsy miova amin'ny toetra (toetra, mekanika amin'ny fampiasana kaody indray). Ny tsy miovaova voafaritra amin'ny toetra iray dia azo idirana amin'ny alalan'ny kilasy izay mampiasa ny toetra (fa tsy amin'ny anaran'ny toetra). toetra Foo { const public CONSTANT = 1; bara fiasana ho an'ny daholobe(): int { miverina tena:: CONSTANT; // Fatal error } } class Bar { use Foo; } var_dump(Bar:: CONSTANT); // 1
  • Nampiana ny fahafahana mamaritra ny karazana amin'ny endrika mahazatra disjunctive (DNF, Disjunctive Normal Form), izay ahafahanao manambatra ny firaisan'ny karazana (fanangonana karazana roa na maromaro) sy ny fihaonan'ny karazana (karazana izay latsaka ambany ny sandany maromaro. karazana miaraka). class Foo { barre public function((A&B)|null $entity) {if ($entity === null) {return null; } miverina $ entity; } }
  • Nisy fanitarana vaovao "Random" natolotra miaraka amin'ny fiasa sy kilasy hamoronana isa sy filaharana pseudo-random. Ny maodely dia manome interface tsara mifototra amin'ny zavatra, mamela anao hisafidy motera isan-karazany hamoronana isa pseudo-random, ao anatin'izany ireo mety hampiasaina amin'ny kriptografika, ary manome fiasa fanampiny, ohatra, amin'ny fampifangaroana an-tsokosoko ny array sy ny tady, ny fisafidianana ny lakilen'ny array kisendrasendra, fampiasana miaraka amin'ny gropy maro miaraka amin'ny fanjakana mahaleo tena anao. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • Nampiharina ny fiovan'ny tranga tsy miankina eo an-toerana. Ny fiasa toy ny strtolower() sy strtoupper() dia mamadika foana ny tranga misy ny tarehintsoratra ao amin'ny faritra ASCII, toy ny rehefa mametraka ny toerana ho "C".
  • Nampiana fiasa vaovao: 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.
  • Nampiana fomba vaovao: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Tsy ampiasaina intsony ny fahafahana mamorona fananana amin'ny fomba mavitrika ao anaty kilasy. Ao amin'ny PHP 9.0, ny fidirana amin'ny fananana izay tsy voafaritra voalohany ao amin'ny kilasy dia hiteraka hadisoana (ErrorException). Ireo kilasy izay manome fomba __get sy __set amin'ny famoronana fananana, na fananana mavitrika ao amin'ny stdClass, dia hanohy hiasa tsy misy fiovana, asa an-kolaka miaraka amin'ny fananana tsy misy ihany no ho tohanana mba hiarovana ny mpamorona amin'ny bibikely miafina. Mba hitehirizana ny asan'ny kaody taloha, ny toetra "#[AllowDynamicProperties]" dia atolotra, mamela ny fampiasana fananana mavitrika.
  • Ny fahafahana manolo ny soatoavina miovaova amin'ny tady mampiasa teny "${var}" sy ${(var)}" dia tsy ampiasaina. Ny fanohanana ny fanoloana "{$var}" sy "$var" fampiasa matetika dia nohazonina. Ohatra: "Manahoana {$world}"; OK "Hello $world"; OK "Manahoana ${world}"; Tsy ampiasaina: Tsy ampiasaina intsony ny fampiasana ${} amin'ny tady
  • Ireo antso an-tariby notohanana ampahany izay azo antsoina amin'ny alalan'ny "call_user_func($callable)" dia tsy ampiasaina, fa tsy manohana ny fiantsoana amin'ny endrika "$callable()": "self::method" "parent::method" "static :: fomba" ["tena", "fomba"] ["ray aman-dreny", "fomba"] ["static", "fomba"] ["Foo", "Bar::fomba"] [Foo vaovao, "Bar:: fomba "]
  • Ny torolalana error_log_mode dia nampidirina ao amin'ny toe-javatra, ahafahanao mamaritra ny fomba fidirana amin'ny diarin'ny hadisoana.

Source: opennet.ru

Add a comment