เบซเบผเบฑเบเบเบฒเบเบซเบเบถเปเบเบเบตเบเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ, เบเบฒเบเบเปเบญเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบก PHP 8.2 เปเบเปเบเบทเบเบเปเบฒเบชเบฐเปเบซเบเบต. เบชเบฒเบเบฒเปเบซเบกเปเบเบฐเบเบญเบเบกเบตเบเบธเบเบเบญเบเบฅเบฑเบเบชเบฐเบเบฐเปเบซเบกเป, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบเปเบฒเบฅเบฒเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเป.
เบเบฒเบเบเบฑเบเบเบธเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบ PHP 8.2:
- เปเบเบตเปเบกเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเปเบฒเบเบซเปเบญเบเบฎเบฝเบเปเบเบฑเบเปเบเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ. เบเบธเบเบชเบปเบกเบเบฑเบเปเบเบซเปเบญเบเบฎเบฝเบเบเบฑเปเบเบเปเบฒเบงเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเปเบเบเบฝเบเปเบเปเบเบฑเปเบเบเบฝเบง, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบเปเบเป. เบเปเบญเบเบซเบเปเบฒเบเบตเป, เบเบธเบเบชเบปเบกเบเบฑเบเปเบเปเบฅเบฐเบเบฑเปเบเบชเบฒเบกเบฒเบเบเบทเบเบซเบกเบฒเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ, เปเบเปเบเบญเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเบเปเบเปเปเบซเบกเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฑเปเบเบเบฑเบเบซเบกเบปเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ. เบเบฒเบเบฅเบฐเบเบธเบเบธเบ "เบญเปเบฒเบเบขเปเบฒเบเบเบฝเบง" เปเบเบฅเบฐเบเบฑเบเบเบฑเปเบเบฎเบฝเบเบเบฑเบเบเบฑเบเบเบงเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเบเบฒเบเบเบทเบเปเบเบตเปเบกเปเบเบเปเบเบทเปเบญเบเปเบซเบงเปเบซเปเบเบฑเบเบเบฑเปเบเบฎเบฝเบ. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* โฆ */); $post->unknown = 'เบเบดเบ'; // เบเปเปเบเบดเบเบเบฒเบ: เบเปเปเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง Post::$unknown
- เปเบเบตเปเบกเบเบฐเปเบเบเปเบเบเบเปเบฒเบเบซเบฒเบ "true", "false" เปเบฅเบฐ "null", เปเบเบดเปเบเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบเบฝเบเปเบเปเบซเบเบถเปเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบเปเบฅเบฐเบเบทเบเบเปเบฒเปเบเป, เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบชเบปเปเบเบเบทเบเบเบฑเบเบเบฑเบเบเบตเปเบกเบตเบเบธเบเบเบฒเบเบขเบธเบเปเบเบปเบฒเบเบงเบฒเบกเบเบดเบเบเบฒเบเบซเบผเบทเบเปเบฒเบซเบงเปเบฒเบเปเบเบปเปเบฒ. เบเปเบญเบเบซเบเปเบฒเบเบตเป, "true", "false" เปเบฅเบฐ "null" เบชเบฒเบกเบฒเบเปเบเปเบฎเปเบงเบกเบเบฑเบเบเบฐเปเบเบเบญเบทเปเบเปเบเบปเปเบฒเบเบฑเปเบ (เบเบปเบงเบขเปเบฒเบ, "string|false"), เปเบเปเปเบเบเบฑเบเบเบธเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเปเบฒเบเบซเบฒเบ: function alwaysFalse(): false { return false ; }
- เปเบซเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบเปเบเบเบปเบเบเบญเบเปเบเบ stack trace เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เบเบฒเบเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเบขเปเบฒเบเบญเบฒเบเบเบฐเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเปเบกเบทเปเบญเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบทเปเบเบเบฐเบเบทเบเบชเบปเปเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบซเบฒเบเปเบฅเบดเบเบฒเบเบเบฒเบเบชเปเบงเบเบเบตเบชเบฒเบกเบเบตเปเบเบดเบเบเบฒเบกเบเบฑเบเบซเบฒเปเบฅเบฐเปเบเปเบเปเบซเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบเบงเบเบกเบฑเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเปเบงเบฑเปเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบเบฐเบเบญเบเบกเบตเบเบทเปเบเบนเปเปเบเป, เบฅเบฐเบซเบฑเบเบเปเบฒเบ, เปเบฅเบฐเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฒเบเบเบดเบเบเบฒเบก. function test($foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'เบฅเบฐเบซเบฑเบเบเปเบฒเบ', 'baz'); เบเบงเบฒเบกเบเบดเบเบเบฒเบเบฎเปเบฒเบเปเบฎเบ: เบเปเปเปเบเปเบเบฑเบเบเปเปเบเบปเบเปเบงเบฑเปเบ: เบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบ test.php:8 เบเบฒเบเบเบดเบเบเบฒเบกเบเบฒเบเบเบดเบเบเบฑเบ: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} thrown in test.php เปเบโเปเบชเบฑเปเบ 8
- เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบปเบเบเปเบฒเบเบปเบเบเบตเปเปเบเบฅเบฑเบเบชเบฐเบเบฐ (เบฅเบฑเบเบชเบฐเบเบฐ, เบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบเบเบทเบเปเบซเบกเป). เบเบปเบเบเบตเปเบเบตเปเบเปเบฒเบเบปเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเปเบกเปเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเปเบฒเบเบซเปเบญเบเบฎเบฝเบเบเบตเปเปเบเปเบฅเบฑเบเบชเบฐเบเบฐ (เปเบเปเบเปเปเปเบกเปเบเบเปเบฒเบเบเบทเปเบฅเบฑเบเบชเบฐเบเบฐ). trait Foo { public const CONSTANT = 1; public function bar(): int { return self::CONSTANT; // Fatal error } } class Bar { เปเบเป Foo; } var_dump(Bar::CONSTANT); // 1
- เปเบเบตเปเบกเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบฅเบฐเบเบธเบเบฐเปเบเบเปเบเบฎเบนเบเปเบเบเบเบปเบเบเบฐเบเบด disjunctive (DNF, Disjunctive Normal Form), เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบปเบกเบเบปเบเบเบฒเบเบฅเบงเบกเบเบญเบเบเบฐเปเบเบ (เบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบญเบเบชเบญเบเบเบฐเปเบเบเบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบเบฑเปเบ) เปเบฅเบฐเบเบธเบเบเบฑเบเบเบฑเบเบเบญเบเบเบฐเปเบเบ (เบเบฐเปเบเบเบเบตเปเบกเบตเบเปเบฒเบเปเปเบฒเบเบงเปเบฒเบซเบผเบฒเบ. เบเบฐโเปเบเบโเบเปเบญเบกโเบเบฑเบโ)โ. class Foo { public function bar((A&B)|null $entity) { if ($entity === null) { return null; } เบเบฑเบเบเบทเบ $entity; } }
- เบเบฒเบเบเบฐเบซเบเบฒเบเปเบซเบกเป "Random" เปเบเปเบเบทเบเบชเบฐเปเบซเบเบตเบเปเบงเบเบซเบเปเบฒเบเบตเปเปเบฅเบฐเบเบฑเปเบเบฎเบฝเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบปเบงเปเบฅเบ pseudo-random เปเบฅเบฐเบฅเปเบฒเบเบฑเบ. เปเบกเบเบนเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเปเบเบญเบเบงเบฑเบเบเบธ, เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบปเบงเปเบฅเบ pseudo-random, เบฅเบงเบกเบเบฑเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบ cryptography, เปเบฅเบฐเบชเบฐเบซเบเบญเบเบซเบเปเบฒเบเบตเปเบเปเบงเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบชเบปเบก arrays เปเบฅเบฐ strings random, เบเบฒเบเปเบฅเบทเบญเบ array keys random, เบเบฒเบโเบเปเบฒโเปเบเปโเบเปเบญเบกโเบเบฑเบโเบเบญเบโเปเบเบทเปเบญเบโเบเบฐโเบฅเบดเบโเบเปเบฒโเบเบงเบโเบซเบเบถเปเบโเบเบตเปโเบกเบตโเบฅเบฑเบโเปเบญโเบเบฐโเบฅเบฒเบโเบเบญเบโเบเปเบฒเบโเปเบญเบโ. $rng = $is_production ? เปเปเป Random\Engine\Secure(): new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString('foobar');
- เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฝเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเปเบเบถเปเบเบเบฑเบเบเปเบญเบเบเบดเปเบ. เบเบฑเบเบเบฑเบเบเปเบฒเบเปเปเบเบฑเปเบ strtolower() เปเบฅเบฐ strtoupper() เบเบฝเบงเบเบตเปเบเปเบฝเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบเปเบเบเปเบงเบ ASCII เบเบทเบเบฑเบเบงเปเบฒเบเบฑเปเบเปเบเบฑเบเบเปเบญเบเบเบดเปเบ "C".
- เปเบเบตเปเบกเบเบฑเบเบเบฑเบเปเปเป: 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.
- เปเบเบตเปเบกเบงเบดเบเบตเบเบฒเบเปเบซเบกเป: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
- เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบชเปเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบเปเบเบเปเบเบเบฒเบกเบดเบเปเบเบเบฑเปเบเบฎเบฝเบเปเบเปเบเบทเบเบเบฐเบเบดเปเบชเบ. เปเบ PHP 9.0, เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเปเปเปเบเปเบเปเบฒเบเบปเบเปเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเบซเปเบญเบเบฎเบฝเบเบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ (ErrorException). เบซเปเบญเบเบฎเบฝเบเบเบตเปเบชเบฐเบซเบเบญเบเบงเบดเบเบตเบเบฒเบ __get เปเบฅเบฐ __set เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบ, เบซเบผเบทเบเบธเบเบชเบปเบกเบเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเปเบ stdClass เบเบฐเบชเบทเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ, เบเบฝเบเปเบเปเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ implicit เบเบฑเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเปเปเบกเบตเบขเบนเปเปเบฅเปเบงเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบทเปเบญเบเบปเบเบเปเบญเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฒเบเปเบกเบเปเบกเปเบเบตเปเปเบเบทเปเบญเบเปเบงเป. เปเบเบทเปเบญเบฎเบฑเบเบชเบฒเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒ, เบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ "#[AllowDynamicProperties]" เบเบทเบเบชเบฐเปเบซเบเบต, เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง.
- เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบปเบเปเบเบเบเปเบฒเบเบปเบงเปเบเปเบเบฑเบเบชเบฐเบเบฃเบดเบเปเบเบเปเบเปเบชเบณเบเบงเบ "${var}" เปเบฅเบฐ ${(var)} เปเบเปเบเบทเบเบเบปเบเปเบฅเบตเบ. เบเบฒเบเบฎเบญเบเบฎเบฑเบเบเบฒเบเบเบปเบเปเบเบ "{$var}" เปเบฅเบฐ "$var" เบเบตเปเปเบเปเบเบปเปเบงเปเบเบเบทเบเบฎเบฑเบเบชเบฒเปเบงเป. เบเบปเบงเบขเปเบฒเบ: "เบชเบฐเบเบฒเบเบเบต {$world}"; เบเบปเบเบฅเบปเบ "เบชเบฐเบเบฒเบเบเบต $world"; เบเบปเบเบฅเบปเบ "เบชเบฐเบเบฒเบเบเบต ${world}"; เปเบเบปเบฒเบฎเบญเบเบฎเบฑเบ: เบเบฒเบเปเบเป ${} เปเบเบชเบฐเบเบฃเบดเบเบเบทเบเบเบฐเบเบดเปเบชเบ
- เปเบเบปเบฒเบฎเบญเบเบฎเบฑเบเบเบฒเบเปเบเบเบตเปเบฎเบญเบเบฎเบฑเบเบเบฒเบเบชเปเบงเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเบเปเบฒเบ "call_user_func($callable)" เปเบเปเบเปเปเบฎเบญเบเบฎเบฑเบเบเบฒเบเปเบเปเบเบฎเบนเบเปเบเบเบเบญเบ "$callable()": "self::method" "parent::method" "static" ::method ["เบเบปเบเปเบญเบ", "เบงเบดเบเบตเบเบฒเบ"] ["เบเปเปเปเบกเป", "เบงเบดเบเบตเบเบฒเบ"] ["static", "เบงเบดเบเบตเบเบฒเบ"] ["Foo", "Bar::เบงเบดเบเบตเบเบฒเบ"] [Foo เปเบซเบกเป, "Bar: :เบงเบดเบเบตเบเบฒเบ" ]
- เบเปเบฒเบชเบฑเปเบ error_log_mode เปเบเปเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ, เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบฎเบนเบเปเบเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฑเบเบเบฑเบเบเบถเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru