เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เบฃเปเบเบฃเบกเบžเบฒเบชเบฒ PHP 8.2

เบซเบผเบฑเบ‡เบˆเบฒเบเบซเบ™เบถเปˆเบ‡เบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ›เปˆเบญเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก 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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™