PHP 8.2 programming mutauro kuburitswa

Mushure megore rebudiriro, kuburitswa kweiyo PHP 8.2 programming mutauro kwakaunzwa. Bazi idzva rinosanganisira nhevedzano yezvinhu zvitsva, pamwe neshanduko dzakati wandei dzinoputsa kuenderana.

Kuvandudza kwakakosha muPHP 8.2:

  • Yakawedzera kugona kumaka kirasi sekuverenga-chete. Zvivakwa mumakirasi akadaro zvinogona kuiswa kamwe chete, mushure mezvo hazvigone kuchinjwa. Pakutanga, zvivakwa zvekirasi yega zvaigona kuverengerwa kuverenga-chete, asi ikozvino unogona kugonesa iyi modhi kune ese makirasi zvivakwa kamwechete. Kutsanangura mureza "wekuverenga chete" padanho rekirasi zvakare kunovharira zvivakwa kubva pakuwedzerwa zvine simba kukirasi. readonly class Post {basa revanhu __kuvaka(ruzhinji tambo $title,Munyori weruzhinji $munyori,) {}} $post = new Post(/* … */); $ post-> isingazivikanwe = 'zvisizvo'; // Mhosho: Haikwanise kugadzira inochinja pfuma Post ::$ isingazivikanwe
  • Akawedzera marudzi akasiyana "chokwadi", "nhema" uye "null", ayo anogona kutora kukosha kumwe chete uye anoshandiswa, semuenzaniso, kudzorera basa rine mureza wekugumisa kukanganisa kana kukosha kusina chinhu. Kare, "chokwadi", "nhema" uye "null" zvaingoshandiswa pamwe chete nemamwe marudzi (semuenzaniso, "tambo | nhema"), asi iye zvino anogona kushandiswa zvakasiyana: shanda nguva dzoseFalse(): nhema {kudzoka nhema ; }
  • Inopa kugona kusefa inonzwisisika paramita mune stack trace inobuda panguva yekukanganisa. Kucheka rumwe ruzivo kungave kuri madikanwa kana ruzivo nezve kukanganisa kunoitika kuchitumirwa otomatiki kune wechitatu-bato masevhisi anoteedzera matambudziko uye kuzivisa vanogadzira nezvazvo. Semuenzaniso, unogona kusabvisa ma paramita anosanganisira mazita ekushandisa, mapassword, uye nharaunda dzakasiyana kubva pakutevera. basa bvunzo( $foo, #[\SensitiveParameter] $password, $baz) {kanda mutsva Kunze('Kukanganisa'); } test('foo', 'password', 'baz'); Chikanganiso chinouraya: Chisina Kubatwa: Chikanganiso mutest.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} yakakandwa mutest.php paline 8
  • Inotenderwa kutsanangura zvinoramba zviripo muhunhu (hunhu, nzira yekushandisazve kodhi). Constants inotsanangurwa muhunhu inogona kuwanikwa kuburikidza nekirasi inoshandisa hunhu (asi kwete kuburikidza nezita rehunhu). hunhu Foo {paruzhinji const CONSTANT = 1; public function bar(): int { return self::CONSTANT; // Kukanganisa kunouraya } } kirasi Bar {shandisa Foo; } var_dump(Bar::CONSTANT); // 1
  • Yakawedzera kugona kudoma mhando mune disjunctive yakajairika fomu (DNF, Disjunctive Normal Form), iyo inokutendera iwe kusanganisa mubatanidzwa wemhando (miunganidzwa yemhando mbiri kana kupfuura) uye mharadzano yemhando (mhando dzine hunhu hunowira pasi pezvizhinji. mhando panguva imwe chete). class Foo {public function bar((A&B)|null $entity) {kana ($entity === null) { return null; } return $entity; }}
  • Kuwedzerwa kutsva "Random" kwakakurudzirwa nemabasa uye makirasi ekugadzira pseudo-random nhamba uye kutevedzana. Iyo module inopa chinongedzo chakanangana nechinhu, chinokubvumira kuti usarudze injini dzakasiyana dzekugadzira pseudo-random nhamba, kusanganisira idzo dzakakodzera kushandiswa mu cryptography, uye inopa mabasa ekubatsira, semuenzaniso, kusanganisa kusanganisa arrays uye tambo, kusarudza random array kiyi, kushandiswa panguva imwe chete kwemajenareta akati wandei ane yako yakazvimirira nyika. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer-> shuffleString('foobar');
  • Kushandurwa kwenyaya yenzvimbo-yakazvimirira. Mabasa akaita se strtolower () uye strtoupper () ikozvino anogara achishandura nyaya yemavara muASCII renji sekunge yakaiswa ku "C" nzvimbo.
  • Akawedzera mabasa matsva: 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.
  • Yakawedzera nzira itsva: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Iko kugona kugadzira zvine simba zvivakwa mukirasi kwakadzikiswa. MuPHP 9.0, kuwana zvivakwa zvisina kutsanangurwa pakutanga mukirasi zvinokonzeresa kukanganisa (ErrorException). Makirasi anopa __get uye __seti nzira dzekugadzira zvivakwa, kana dynamic zvivakwa mustdClass, acharamba achishanda asina kuchinjika, basa rakajeka chete rine zvisipo zvivakwa zvinotsigirwa kuchengetedza mugadziri kubva kune akavanzika tsikidzi. Kuti uchengetedze basa rekodhi yekare, iyo "#[AllowDynamicProperties]" hunhu hunotsanangurwa, huchibvumira kushandiswa kwezvinhu zvine simba.
  • Kugona kutsiva hunhu hwakasiyana kuita tambo uchishandisa mazwi ekuti "${var}" uye ${(var)} kwaraswa. Tsigiro yezvinowanzo shandiswa "{$var}" uye "$var" zvinotsiva zvakachengetwa. Somuenzaniso: "Mhoro {$world}"; OK "Mhoro $nyika"; OK "Mhoro ${nyika}"; Yakaregwa: Kushandisa ${} mutambo kwaraswa
  • Mafoni anoshevedzwa akaregwa anogona kudanwa kuburikidza ne "call_user_func($callable)" asi asingatsigiri kufona nenzira yekuti "$callable()": "self::method" "mubereki::nzira" "static" ::nzira " ["self", "method"] ["mubereki", "nzira"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar: :method" ]
  • Iko kukanganisa_log_mode dhairekitori yakawedzerwa kune zvigadziriso, zvichikubvumidza kuti uone maitiro ekuwana kune yekukanganisa log.

Source: opennet.ru

Voeg