ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá áºááŸá áºá¡ááŒá¬ááœáẠPHP 8.3 áááá¯ááááºážáááºážáá¬áá¬á áá¬ážááᯠááááºáááºááŒááá²á·áááºá áá¬áááœá²á¡áá áºááœáẠáááºáá±á¬ááºááŸá¯á¡áá áºáá»á¬áž áááºááá¯ááºáá«áááºááá·áºá¡ááŒáẠááá¯ááºáááºáá®ááŸá¯ááᯠáá»áá¯ážáá»ááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá áœá¬ áá«áááºáá«áááºá
PHP 8.3 ááœáẠá¡áááááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž-
- á¡áááºážááœá¬ážáá±á ááºá¡ááœááºážá "readonly" attribute ááŒáá·áº áá¯ááºááá¹áááá»á¬ážááᯠááŒááºáááºá áááºááẠááŒá áºááá¯ááºáááºá readonly properties ááᯠâ__cloneâ áá¯ááºáá±á¬ááºáá»ááºá¡ááœááºážááœááºáᬠááœáá·áºááŒá¯áááº- readonly class Post { public function __construct( public DateTime $createdAt, ) {} public function __clone() { $this->createdAt = new DateTime(); // "createdAt" ááá¯ááºááá¯ááºááŸá¯ááᯠáááºáááºáᬠááŒá áºáá±á¬áºáááºážá // ááœáá·áºááŒá¯áá¬ážáááºá } }
- á¡áááºážáá»á¬ážá á ááá¯ááºááá¹ááá¬áá»á¬ážááŸáá·áº á á¬áááºážáá±á¬ááºááŸá¯áá»á¬ážááœáẠá¡áá»áá¯ážá¡á á¬ážááœáŸááºááŒáá»ááºááŒáá·áº ááááºážáá±áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºá áœááºážááᯠáá±ážáá±á¬ááºááá¯ááºáááº- class Foo { const string BAR = 'baz'; }
- â#[Override]â áááºááœáŸááºážáá»ááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºááœááºážáá¬ážááŒá®ážá áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬ááẠá¡ááŸááºá¡áá¬ážááŒá¯áá¬ážááá·áºáááºážáááºážááẠááááááºážáááºážá¡áá»áá¯á·ááᯠá¡á á¬ážááá¯ážááŒá±á¬ááºáž á áá¬ážááŒááºá¡á¬áž á¡áááá±ážááá¯ááºáááºá áááºáá±ážááŒááºáž áááŸááá«áá á áá¬ážááŒááºááẠá¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááᯠááŒááá«áááºá
- á¡áá¯ááºáááºááá¯ážáá»á¬ážááᯠarray á¡ááœáŸááºážá¡ááŒá ẠááŒá±á¬ááºážáá²áá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¶áá«áẠâ-5â áá«ááá·áº ááŒááºá ááºáá áºáá¯ááᯠá¡ááœááºá¡áááºážá¡áá»ááºážáá áºáá¯ááœáẠááá·áºááœááºážááŒá®áž á¡ááŒá¬ážááŒááºá ááºáá áºáá¯ááᯠáá±á«ááºážááá·áºááá·áºá¡áá«á ááááºá áá¯áááááŒááºá ááºááᯠá¡ááœáŸááºáž â0â ááŒáá·áº ááááºážáááºážáá²á·áá±á¬áºáááºáž PHP áá¬ážááŸááºáž 8.3 á០á áááºá áááºážááᯠá¡ááœáŸááºáž â-4â ááŒáá·áº ááááºážáááºážááœá¬ážáááºááŒá áºáááºá . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($ array); // áááºážáá»ááºážáá²á·ááẠ(-5 => 'a', 0 => 'b') // áááºážáá»ááºážáá²á·ááẠ(-5 => 'a', -4 => 'á')
- áááºáááºáá®ážááá·áºáá¯ááºááœáẠá¡áááºáááá¡áááºážáá»á¬ážááᯠáááºáá®ážááẠá áœááºážáááºááᯠáá±á«ááºážááá·áºáá¬ážáááº- $class = áááºáᬠá¡áááºážáá Ạ{ public function __construct( public string $foo = 'bar', ) {} };
- á á¬ááŒá±á¬ááºážáá áºááŒá±á¬ááºážááẠJSON áá±á¬áºáááºááŸááááŸá á¡ááŒááºá á áºáá±ážááẠjson_validate() áá¯ááºáá±á¬ááºáá»ááºááᯠááá·áºááœááºážáá¬ážáááºá json_validate(string $jsoná int $depth = 512á int $flags = 0): bool
- pseudo-random áá¶áá«ááºáá»á¬ážááŸáá·áº sequences áá»á¬ážááá¯áá¯ááºáá¯ááºáááºá¡ááœáẠá¡ááá·áºááŒáá·áº API ááᯠáá¶á·ááá¯ážáá±ážááá·áº Randomizer á¡áááºážááœáẠáááºážáááºážá¡áá áºáá»á¬áž ááá·áºááœááºážáá¬ážáááº- getBytesFromString ááẠáá±ážáá¬ážáá±á¬ size áá áºáá¯á string áá áºáá¯á¡á¬áž áááºáá®ážáááºá¡ááœáẠá¡ááŒá¬ážáá±á¬ string ááœááºááŸááá±á¬ á á¬áá¯á¶ážáá»á¬ážááᯠáá»áááºážá¡á á®á¡á á¥áºááŒáá·áº á¡áá¯á¶ážááŒá¯ááŒá®ážá áááºááŸááºáá¬ážáá±á¬ á¡ááœá¬á¡áá±ážá¡ááœááºážáá»áá±á¬ááºáá±á¬ áá»áááºážáá±áá±á«áºá¡ááŸááºáá¶áá«ááºáá áºáá¯ááᯠáá¯ááºáá±ážáááºá¡ááœáẠgetFloat ááŸáá·áº nextFloatá
- dynamic class syntax ááᯠá¡áá¯á¶ážááŒá¯á ááááºážáá±áá»á¬ážááᯠáá¯ááºáá°ááá¯ááºáááº- class Foo { const BAR = 'bar'; } $name = 'BAR'; // ááááºá BAR constant ááá¯ááá°áááºá áááºááẠconstant(Foo::class . '::' . $name); // á¡áá¯áá² Foo::{$name};
- áááºá áœá²ááŸáá·áº á¡áá»áááºááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬ áá¯ááºáááºážáá»á¬ážááœáẠááŒá¿áá¬áá»á¬áž áá±á«áºáá±á«ááºáá«á áá áºáŠážáá»ááºážá á® ááŒáœááºážáá»áẠáá»áá¯ážáááºáá»á¬áž (DateMalformedIntervalStringExceptioná DateInvalidOperationExceptioná DateRangeError) ááᯠááá·áºááœááºážáá¬ážáá«áááºá
- unserialize() áá¯ááºáá±á¬ááºáá»ááºááŸá á¡ááœá²ááá¯ááºáá±áá¬áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬áá¬ááœáẠááŒá áºáá±á«áºáá¬ááá·áº á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠááá¯ááºááœááºááŒááºážá ááŒá¿áá¬áá»á¬ážááŸááá«áá ááᯠE_NOTICE á¡á á¬áž E_WARNING ááᯠáá¯ááºáá±ážáá«áááºá
- range() áá¯ááºáá±á¬ááºáá»ááºá¡ááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááŒá¯áá¯ááºáá¬ážáá«áááºá á¡ááœá¬á¡áá±ážáááºááááááºáá»á¬ážááá¯áááºááŸááºáá±ážááá·áº variable áá»á¬ážááœáẠá¡áá¬ááá¹áá¯áá»á¬ážá á¡áááºážá¡ááŒá áºáá»á¬áž ááá¯á·ááá¯áẠarray áá»á¬ážááá¯ááŒááºáááºážáááºááŒáá¯ážá á¬ážáá±áá»áááºááœááºá¡ááŒáẠ$step parameter ááœáẠá¡áá¯ááºááá¹ááá¬áááºááá¯ážáá áºáá¯áááºááŸááºááŒááºáž ááá¯á·ááá¯áẠáááºááá·áº parameter ááœááºáááᯠáááºááŸááºáá¬ážááŒááºážáááŸááá±á¬áááºááá¯ážááᯠáááºááŸááºááá·áºá¡áá«ááœáẠááŒáœááºážáá»ááºáá áºáá¯áá¯ááºáá±ážáá«áááºá áá¶áá«ááºáá»á¬ážá¡á á¬áž á á¬ááŒá±á¬ááºážáá»á¬ážááᯠáááºááŸááºáá±á¬á¡áá«ááœáẠá á¬áá¯á¶ážáá»á¬ážá á¬áááºážááᯠáá¯ááºááá¯ááºáá«ááŒá® (á¥ááá¬á âá¡ááá¯ááºážá¡ááŒá¬áž('5'á 'z')")á
- ááá¯á¡áá« áááºáá¡áááºážá¡á á¬ážá០á¡ááœá±áááºáá¶áá±á¬ áááºááŒáááºáá¯ááºááá¹áááá»á¬ážááᯠá¡á á¬ážááá¯ážááá·áº áááºááŒáááºáá¯ááºááá¹áááá»á¬ážááŒáá·áº á ááá¯ááºááá¹ááá¬áá»á¬ážá á¡ááŒá¯á¡áá°ááᯠááŒá±á¬ááºážáá²áá²á·áááºá
- stack overflow áá¬ááœááºááŸá¯á¡ááœáẠáááºáááºáá»á¬ážááá·áºáá¬ážáááºá zend.max_allowed_stack_size ááŸáá·áº zend.reserved_stack_size áááºážááœáŸááºáá»ááºáá»á¬ážááᯠini ááá¯ááºááá¯á· áá±á«ááºážááá·áºáá¬ážááŒá®ážá á¡áá»á¬ážáá¯á¶ážááœáá·áºááŒá¯áá¬ážáá±á¬ááŸáá·áº áá®ážááá·áºá á¯á ááºážá¡ááœááºá¡á á¬ážááᯠáááºááŸááºáááºá zed.max_allowed_stack_size ááŸáá·áº zend.reserved_stack_size á¡ááŒá¬ážááŒá¬ážáá¬ážáá»ááºááẠstack áá¯ááºáá¯á¶ážááœá¬ážáá±á¬á¡áá«ááœáẠáááá¯ááááºááẠáá»ááºááœá¬ážááẠ(ááœá²ááœááºááŒááºážá¡ááŸá¬ážáááŒá áºáá±á«áºáá®) áá¯ááºáá±á¬ááºááŸá¯ áááºááá·áºááœá¬ážáá«áááºá áá°áááºážá¡á¬ážááŒáá·áºá zend.max_allowed_stack_size áááºááá¯ážááᯠ0 (0âá¡ááœááºá¡á á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáá¯á¶ážááŒááºáááºá ááá·áºáááºáá»ááºááᯠááááºáááºá áááºááẠáááºážááᯠ-1) áᯠáááºááŸááºááá¯ááºáááºá
- POSIX áá¯ááºáá±á¬ááºáá»ááºá¡áá áºáá»á¬áž posix_sysconf(), posix_pathconf(), posix_fpathconf() ááŸáá·áº posix_eaccess() ááá¯á·ááᯠááá·áºááœááºážáá²á·áááºá
- UTF-8 áá²á·ááá¯á·áá±á¬ multi-byte encoding áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážááá·áº str_pad() string function á analogue áá áºáá¯ááŒá áºááá·áº mb_str_pad áá¯ááºáá±á¬ááºáá»ááºááᯠááá·áºááœááºážáá¬ážáá«áááºá
- áááºážáááºážáá»á¬ážá០ááááºáá¬ážááŸá¯áá»á¬ážááᯠáááºáá®ážááá¯ááºááŒá®áž á¡ááá¯áá«ááááºááŸá¯áá»á¬ážáᶠá¡áááºáá±ážáá¬ážáá±á¬ ááŒááºážáá¯á¶ááŸá¯áá»á¬ážááᯠááŒááºáááºážááœáá·áºááŒá¯áááºá $test = á ááºážáááºááŸá¯á¡áá áº(); $close = $test->magic(âŠ); $close(a- 'áá²ááá¯'á b: 'ááá¹áá¬');
- á¡ááºáá¬áá±á·á áºáá»á¬ážááŸá ááááºážáá±áá»á¬ážááᯠááŒááºááá¯ááºááŸá¯ááᯠááá¯ááºááœááºááá·áºá¡áá« á¡áá°á¡áá»áá·áºááᯠááŒá±á¬ááºážáá²áá²á·áááºá interface I { public const FOO = 'foo'; } class C ááẠI { private const FOO = 'foo'; }
- array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() ááŸáá·áº proc_get_status() áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááá¯ážáá»á²á·áá¬ážáá«áááºá
- á¡áá¯ááºááá¹ááᬠ$widths áááºááá¯ážááᯠmb_strimwidth() ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážááá¯ááºá áœááºážááᯠáááºááá·áºáá¬ážáááºá NumberFormatter-:TYPE_CURRENCY ááááºážáá±áá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«ááŒá®á $host ááŸáá·áº $port áá±á¬ááºááŸá áºáá¯áá«áá±á¬ ldap_connect() áá¯ááºáá±á¬ááºáá»ááºááᯠáá±á«áºááá¯ááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáááºááá¯ááºážááá¯ááºáá«ááŒá®á opcache.consistency_checks áááºáááºááᯠáááºááŸá¬ážááá¯ááºáá«ááŒá®á
source: opennet.ru