Tso tawm PHP 8.2 programming lus

Tom qab ib xyoos ntawm kev txhim kho, kev tso tawm ntawm PHP 8.2 programming lus tau nthuav tawm. Cov ceg tshiab suav nrog cov yam ntxwv tshiab, nrog rau ntau qhov kev hloov pauv uas cuam tshuam kev sib raug zoo.

Kev txhim kho tseem ceeb hauv PHP 8.2:

  • Ntxiv lub peev xwm los kos ib chav kawm raws li nyeem nkaus xwb. Cov cuab yeej hauv cov chav kawm no tuaj yeem tsim ib zaug xwb, tom qab ntawd lawv tsis tuaj yeem hloov pauv. Yav dhau los, cov khoom hauv chav kawm ib leeg tuaj yeem raug cim nyeem nkaus xwb, tab sis tam sim no koj tuaj yeem qhib hom no rau txhua chav kawm ib zaug. Qhia meej txog tus chij "readonly" ntawm qib kawm kuj tseem thaiv cov khoom los ntawm kev ntxiv dynamically rau hauv chav kawm. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'tsis ncaj ncees lawm'; // yuam kev: Tsis tuaj yeem tsim cov cuab yeej dynamic Post::$unknown
  • Ntxiv cais hom "tseeb", "false" thiab "null", uas tuaj yeem siv tsuas yog ib qho tseem ceeb thiab siv tau, piv txwv li, rov qab ua haujlwm nrog qhov yuam kev txiav chij lossis tus nqi khoob. Yav dhau los, "tseeb", "false" thiab "null" tsuas yog siv tau ua ke nrog lwm hom (piv txwv li, "string|false"), tab sis tam sim no lawv tuaj yeem siv sib cais: ua haujlwm alwaysFalse(): cuav { rov qab tsis tseeb ; }
  • Muab lub peev xwm lim rhiab tsis nyob rau hauv pawg kab tso zis thaum muaj kev ua yuam kev. Txiav tawm qee cov ntaub ntawv yuav tsim nyog thaum cov ntaub ntawv hais txog qhov tsis raug uas tshwm sim raug xa mus rau cov kev pabcuam thib peb uas taug qab cov teeb meem thiab qhia rau cov neeg tsim khoom txog lawv. Piv txwv li, koj tuaj yeem tshem tawm cov tsis suav nrog cov npe siv, passwords, thiab ib puag ncig hloov pauv los ntawm kev taug qab. function test($foo, #[\SensitiveParameter] $password, $baz ) { pov tshiab Exception('Error'); } test('foo', 'password', 'baz'); Qhov yuam kev tuag: Uncaught Exception: yuam kev hauv test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} pov hauv test.php hauv kab 8
  • Tso cai los txhais qhov tsis tu ncua ntawm qhov zoo (qhov zoo, lub tswv yim rau kev rov siv cov lej). Constants txhais hauv qhov zoo tuaj yeem nkag mus tau los ntawm chav kawm uas siv qhov zoo (tab sis tsis yog los ntawm lub npe zoo). trait Foo { public const CONSTANT = 1; public function bar(): int { return self::CONSTANT; // Fatal yuam kev } } class Bar { siv Foo; } var_dump(Bar::CONSTANT); // 1
  • Ntxiv lub peev xwm los qhia cov hom nyob rau hauv daim ntawv disjunctive ib txwm (DNF, Disjunctive Normal Form), uas tso cai rau koj los ua ke lub union ntawm hom (sau ntawm ob los yog ntau hom) thiab kev sib tshuam ntawm hom (hom uas nws muaj nuj nqis poob nyob rau hauv ob peb. hom ib txhij). class Foo { public function bar((A&B)|null $entity) { if ($entity === null) { return null; } rov $entity; }}
  • Ib qhov txuas tshiab "Random" tau raug npaj nrog cov haujlwm thiab cov chav kawm rau kev tsim cov lej pseudo-random thiab cov kab ke. Lub module muab cov khoom-oriented interface, tso cai rau koj xaiv cov cav sib txawv rau kev tsim cov lej pseudo-random, suav nrog cov uas tsim nyog siv hauv cryptography, thiab muab cov haujlwm pabcuam, piv txwv li, rau qhov sib xyaw sib xyaw thiab cov hlua, xaiv cov yuam sij random array, ib txhij siv ntau lub tshuab hluav taws xob nrog koj tus kheej lub xeev ywj pheej. $rng = $is_production ? tshiab Random\Engine\Secure(): tshiab Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • Siv cov kev hloov pauv hauv cheeb tsam-kev ywj pheej. Cov haujlwm zoo li strtolower() thiab strtoupper() tam sim no ib txwm hloov cov ntaub ntawv ntawm cov cim hauv ASCII ntau yam li yog teem rau "C" hauv zos.
  • Ntxiv cov haujlwm tshiab: 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.
  • Ntxiv txoj kev tshiab: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Lub peev xwm los tsim cov khoom dynamically hauv chav kawm tau raug deprecated. Hauv PHP 9.0, nkag mus rau cov khoom uas tsis tau piav qhia hauv chav kawm yuav ua rau muaj qhov yuam kev (ErrorException). Cov chav kawm uas muab __get thiab __set txoj hauv kev los tsim cov khoom, lossis cov khoom muaj zog hauv stdClass yuav txuas ntxiv ua haujlwm yam tsis muaj kev hloov pauv, tsuas yog ua haujlwm tsis zoo nrog cov khoom tsis muaj nyob yuav raug txhawb los tiv thaiv tus tsim tawm los ntawm cov kab zais. Txhawm rau khaws cov haujlwm ntawm cov cai qub, "#[AllowDynamicProperties]" tus cwj pwm tau npaj tseg, tso cai rau kev siv cov khoom muaj zog.
  • Lub peev xwm los hloov cov nqi sib txawv rau hauv cov hlua siv cov kab lus "${var}" thiab ${(var)} tau deprecated. Kev them nyiaj yug rau cov uas nquag siv "{$var}" thiab "$var" hloov pauv tau khaws cia. Piv txwv li: "Nyob zoo {$world}"; OK "Nyob zoo $world"; OK "Nyob zoo ${world}"; Deprecated: Siv ${} nyob rau hauv cov hlua yog deprecated
  • Deprecated ib feem txhawb callables uas tuaj yeem hu los ntawm "call_user_func($ callable)" tab sis tsis txhawb kev hu ua "$callable()": "tus kheej:: txoj kev" "niam txiv:: txoj kev" "static" :: txoj kev ["tus kheej", "txoj kev"] ["niam txiv", "txoj kev"] ["static", "txoj kev"] ["Foo", "Bar::method"] [new Foo, "Bar: :method" ]
  • Cov lus qhia error_log_mode tau ntxiv rau qhov chaw, tso cai rau koj los txiav txim siab txog hom nkag mus rau qhov yuam kev.

Tau qhov twg los: opennet.ru

Ntxiv ib saib