ื‘ื“ื™ืงื•ืช ืืœืคื ืฉืœ PHP 8.2 ื”ื—ืœื•

ื”ื•ืฆื’ื” ืžื”ื“ื•ืจืช ื”ืืœืคื ื”ืจืืฉื•ื ื” ืฉืœ ื”ืขื ืฃ ื”ื—ื“ืฉ ืฉืœ ืฉืคืช ื”ืชื›ื ื•ืช PHP 8.2. ื”ื”ืฉืงื” ืžืชื•ื›ื ื ืช ืœ-24 ื‘ื ื•ื‘ืžื‘ืจ. ื”ื—ื™ื“ื•ืฉื™ื ื”ืขื™ืงืจื™ื™ื ืฉื›ื‘ืจ ื–ืžื™ื ื™ื ืœื‘ื“ื™ืงื” ืื• ืžืชื•ื›ื ื ื™ื ืœื™ื™ืฉื•ื ื‘-PHP 8.2:

  • ื ื•ืกืคื• ืกื•ื’ื™ื ื ืคืจื“ื™ื "false" ื•-"null", ื‘ื”ื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ, ืœืžืฉืœ, ื›ื“ื™ ืœื”ื—ื–ื™ืจ ืกื™ืžืŸ ืฉืœ ื”ืฉืœืžื” ืขื ืฉื’ื™ืื” ืื• ืขืจืš ืจื™ืง ืขืœ ื™ื“ื™ ืคื•ื ืงืฆื™ื”. ื‘ืขื‘ืจ, ื ื™ืชืŸ ื”ื™ื” ืœื”ืฉืชืžืฉ ื‘-"false" ื•-"null" ืจืง ื‘ืฉื™ืœื•ื‘ ืขื ืกื•ื’ื™ื ืื—ืจื™ื (ืœื“ื•ื’ืžื”, "string|false"), ืืš ื›ืขืช ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ื ืคืจื“: function alwaysFalse(): false { return false; }
  • ื ื•ืกืคื” ื”ื™ื›ื•ืœืช ืœืกืžืŸ ื›ื™ืชื” ื›ืงืจื™ืื” ื‘ืœื‘ื“. ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืžืืคื™ื™ื ื™ื ื‘ืžื—ืœืงื•ืช ื›ืืœื” ืคืขื ืื—ืช ื‘ืœื‘ื“, ื•ืœืื—ืจ ืžื›ืŸ ื”ื ืœื ื™ื”ื™ื• ื–ืžื™ื ื™ื ืœืฉื™ื ื•ื™. ื‘ืขื‘ืจ, ื ื™ืชืŸ ื”ื™ื” ืœืกืžืŸ ืžืืคื™ื™ื ื™ ืžื—ืœืงื” ื‘ื•ื“ื“ื™ื ืœืงืจื™ืื” ื‘ืœื‘ื“, ืืš ื›ืขืช ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืžืฆื‘ ื–ื” ืขื‘ื•ืจ ื›ืœ ืžืืคื™ื™ื ื™ ื”ืžื—ืœืงื” ื‘ื‘ืช ืื—ืช. ืฆื™ื•ืŸ ื”ื“ื’ืœ "ืœืงืจื™ืื” ื‘ืœื‘ื“" ื‘ืจืžืช ื”ืžื—ืœืงื” ื—ื•ืกื ื’ื ืืช ื”ื”ื•ืกืคื” ื”ื“ื™ื ืžื™ืช ืฉืœ ืžืืคื™ื™ื ื™ื ืœืžื—ืœืงื”. classonly class Post { public function __construct( ืžื—ืจื•ื–ืช ืฆื™ื‘ื•ืจื™ืช $title, Public Author $author, ) {} } $post = new Post(/* โ€ฆ */); $post->unknown = 'ืฉื’ื•ื™'; // ืฉื’ื™ืื”: ืœื ื ื™ืชืŸ ืœื™ืฆื•ืจ ืžืืคื™ื™ืŸ ื“ื™ื ืžื™ Post::$unknown
  • ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืžืืคื™ื™ื ื™ื ื‘ืžื—ืœืงื” ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ (ื›ืžื• "ืคื•ืกื˜->ืœื ื™ื“ื•ืข" ื‘ื“ื•ื’ืžื” ืœืžืขืœื”). ื‘-PHP 9.0, ื’ื™ืฉื” ืœืžืืคื™ื™ื ื™ื ืฉืœื ื”ื•ื’ื“ืจื• ื‘ืžืงื•ืจ ื‘ืžื—ืœืงื” ืชื’ืจื•ื ืœืฉื’ื™ืื” (ErrorException). ืžื—ืœืงื•ืช ื”ืžืกืคืงื•ืช ืฉื™ื˜ื•ืช __get ื•-__set ืœื™ืฆื™ืจืช ืžืืคื™ื™ื ื™ื, ืื• ืžืืคื™ื™ื ื™ื ื“ื™ื ืžื™ื™ื ื‘-stdClass ื™ืžืฉื™ื›ื• ืœืขื‘ื•ื“ ืœืœื ืฉื™ื ื•ื™, ืจืง ืขื‘ื•ื“ื” ืžืจื•ืžื–ืช ืขื ืžืืคื™ื™ื ื™ื ืœื ืงื™ื™ืžื™ื ืชื•ืคืกืง ืขืœ ืžื ืช ืœื”ื’ืŸ ืขืœ ื”ืžืคืชื— ืžืฉื’ื™ืื•ืช ื ืกืชืจื•ืช. ื›ื“ื™ ืœืฉืžื•ืจ ืขืœ ื”ืงื•ื“ ื”ื™ืฉืŸ ืคื•ืขืœ, ืžื•ืฆืขืช ื”ืชื›ื•ื ื” "#[AllowDynamicProperties]", ื”ืžืืคืฉืจืช ืฉื™ืžื•ืฉ ื‘ืžืืคื™ื™ื ื™ื ื“ื™ื ืžื™ื™ื.
  • ืกื™ืคืงื” ืืช ื”ื™ื›ื•ืœืช ืœืกื ืŸ ื”ื’ื“ืจื•ืช ืจื’ื™ืฉื•ืช ื‘ืคืœื˜ ืžืขืงื‘ ืžื—ืกื ื™ืช ื‘ื–ืžืŸ ืฉื’ื™ืื”. ื ื™ืชื•ืง ืžื™ื“ืข ืžืกื•ื™ื ืขืฉื•ื™ ืœื”ื™ื“ืจืฉ ื›ืืฉืจ ืžื™ื“ืข ืขืœ ืฉื’ื™ืื•ืช ื”ืžืชืจื—ืฉื•ืช ื ืฉืœื— ืื•ื˜ื•ืžื˜ื™ืช ืœืฉื™ืจื•ืชื™ ืฆื“ ืฉืœื™ืฉื™ ืฉืขื•ืงื‘ื™ื ืื—ืจ ื‘ืขื™ื•ืช ื•ืžื•ื“ื™ืขื™ื ืœืžืคืชื—ื™ื ืขืœื™ื”ืŸ. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื”ื•ืฆื™ื ืคืจืžื˜ืจื™ื ืžื”ืžืขืงื‘ ื”ื›ื•ืœืœื™ื ืฉืžื•ืช ืžืฉืชืžืฉ, ืกื™ืกืžืื•ืช ื•ืžืฉืชื ื™ ืกื‘ื™ื‘ื”. 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} ื ื–ืจืง ื‘-test.php ื‘ืื™ื ื˜ืจื ื˜ 8
  • ื”ื™ื›ื•ืœืช ืœื”ื—ืœื™ืฃ ืขืจื›ื™ ืžืฉืชื ื™ื ืœืžื—ืจื•ื–ื•ืช ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ื™ "${var}" ื•-${(var)}" ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ. ื”ืชืžื™ื›ื” ื‘ื”ื—ืœืคื•ืช "{$var}" ื•-"$var" ื”ื ืคื•ืฆื•ืช ื ืฉืžืจื”. ืœื“ื•ื’ืžื”: "ืฉืœื•ื {$world}"; ื‘ืกื“ืจ "ืฉืœื•ื $ืขื•ืœื"; ืื™ืฉื•ืจ "ืฉืœื•ื ${ืขื•ืœื}"; ื”ื•ืฆื ืžืฉื™ืžื•ืฉ: ื”ืฉื™ืžื•ืฉ ื‘-${} ื‘ืžื—ืจื•ื–ื•ืช ื”ื•ืฆื ืžืฉื™ืžื•ืฉ
  • ื ื™ืชื ื™ื ืœื”ืชืงืฉืจื•ืช ื ืชืžื›ื™ื ื—ืœืงื™ืช ืฉื ื™ืชืŸ ืœืงืจื•ื ื‘ืืžืฆืขื•ืช "call_user_func($callable)" ื”ื•ืฆืื• ืžืฉื™ืžื•ืฉ, ืืš ืื™ื ื ืชื•ืžื›ื™ื ื‘ืงืจื™ืื” ื‘ืฆื•ืจื” "$callable()": "self::method" "parent::method" "static :: method" ["ืขืฆืžื™", "ืฉื™ื˜ื”"] ["ื”ื•ืจื”", "ืฉื™ื˜ื”"] ["ืกื˜ื˜ื™", "ืฉื™ื˜ื”"] ["Foo", "Bar::method"] [ื—ื“ืฉ Foo, "Bar: :method" "]
  • ื”ื˜ืžืขื” ื”ืžืจืช ืžืงืจื” ืœืœื ืชืœื•ืช ืžืงื•ืžื™. ืคื•ื ืงืฆื™ื•ืช ื›ืžื• strtolower() ื•-strtoupper() ื›ืขืช ืชืžื™ื“ ืžืžื™ืจื•ืช ืืช ื”ืื•ืชื™ื•ืช ืฉืœ ืชื•ื•ื™ื ื‘ื˜ื•ื•ื— ASCII, ื›ืžื• ื‘ืขืช ื”ื’ื“ืจืช ื”ืžืงื•ื ืœ-"C".

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”