ืืืืจ ืฉื ื ืฉื ืคืืชืื, ืืืฆืื ืฉืืจืืจ ืฉืคืช ืืชืื ืืช PHP 8.3. ืืกื ืืฃ ืืืืฉ ืืืื ืฉืืจื ืฉื ืคืืฆ'ืจืื ืืืฉืื, ืืื ืื ืืกืคืจ ืฉืื ืืืื ืืฉืืืจืื ืืช ืืชืืืืืช.
ืฉืื ืืืื ืืจืืืืื ื-PHP 8.3:
- ืืืืื ืฉืืืื ืืืืงืืช, ื ืืชื ืืืชืื ืืืืฉ ืืืคืืื ืื ืขื ืืชืืื ื "ืืงืจืืื ืืืื". ืขืงืืคื ืฉื ืืืคืืื ื ืงืจืืื ืืืื ืืืชืจืช ืจืง ืืชืื ืืคืื ืงืฆืื "__clone": readonly class Post { public function __construct( public DateTime $createdAt, ) {} public function __clone() { $this->createdAt = new DateTime(); // ืืืชืจ ืืืจืืช ืฉืืืืคืืื "createdAt" ืืื ืืงืจืืื ืืืื. } }
- ื ืืชื ื ืืืืืืช ืืืฉืชืืฉ ืืงืืืขืื ืขื ืืืืื ืกืื ืืืืืงืืช, ืชืืื ืืช ืืกืคืืจืืช: class Foo { const string BAR = 'baz'; }
- ื ืืกืคื ืชืืืื ืืชืืื ืช "#[ืขืืงืฃ]", ืฉืืืืฆืขืืชื ืืืคืชื ืืืื ืืืืืข ืืช ืืืชืืจืืื ืฉืืฉืืื ืืืกืืื ืช ืขืืงืคืช ืฉืืืช ืื ืืืฉืื. ืื ืืื ืืจืืกื, ืืืชืืจืืื ืืฆืื ืฉืืืื.
- ืืืคืื ืฉืื ื ืืขืจืืื ืฉืืืืืื ืืืื ืืงืก ืืขืจื. ืืืืืื, ืืขืช ืืืกืคืช ืืืื ื ืขื ืืกืคืจ "-5" ืืืขืจื ืจืืง ืืืืกืคืช ืืืื ื ื ืืกืฃ, ืืขืืจ ืืืืื ื ืืฉื ื ื ืฉืืจ ืขื ืืื ืืงืก "0", ืื ืืื ืืืจืกื PHP 8.3 ืืื ืืืฉืืจ ืขื ืืื ืืงืก "-4" . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // ืืื ืืขืจื (-5 => 'a', 0 => 'b') // ืืคื ืืืขืจื (-5 => 'a', -4 => 'b')
- ื ืืกืคื ืืืืืืช ืืืฆืืจ ืืืืงืืช ืื ืื ืืืืืช ืืืฆื ืงืจืืื ืืืื: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
- ื ืืกืคื ืคืื ืงืฆืืืช json_validate() ืืื ืืืืืง ืืืืืจืืช ืื ืืืจืืืช ืืคืืจืื JSON ืืืื ืืืฆืข ืคืขืืืืช ืคืขื ืื. json_validate(ืืืจืืืช $json, int $depth = 512, int $flags = 0): bool
- ื ืืกืคื ืฉืืืืช ืืืฉืืช ืืืืืงื Randomizer, ืืืกืคืงืช API ืืจืื ืืืืื ืืืฆืืจืช ืืกืคืจืื ืืจืฆืคืื ืคืกืืืื ืืงืจืืืื: getBytesFromString ืืืฆืืจืช ืืืจืืืช ืืืืื ื ืชืื, ืชืื ืฉืืืืฉ ืืกืืจ ืืงืจืื ืืชืืืื ืืงืืืืื ืืืืจืืืช ืืืจืช; getFloat ื-nextFloat ืืืฆืืจืช ืืกืคืจ ื ืงืืื ืฆืคื ืืงืจืืืช ืื ืืคื ืืืืื ืฉืฆืืื.
- ื ืืกืคื ืืืืืืช ืืืืืจ ืงืืืขืื ืืืืฆืขืืช ืชืืืืจ ืืืืงื ืืื ืื: class Foo { const BAR = 'bar'; } $name = 'BAR'; // ืืขืืจ, ืืื ืืืืืจ ืืช ืงืืืข BAR, ืืืืช ืฆืจืื ืืงืจืื ื- constant(Foo::class . '::' . $name); // ืขืืฉืื ืจืง ืฆืืื Foo::{$name};
- ื ืืกืฃ ืืฆืืจื ืฉื ืืจืืืื ืืืืืื (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) ืืืงืจื ืฉื ืืขืืืช ืืืชืขืืจืจืืช ืืคืขืืืืช ืฉืขืืืืืช ืขื ืชืืจืืืื ืืฉืขื.
- ืืืคืื ืืฉืืคืจ ืืฉืืืืืช ืืืชืจืืฉืืช ืืืืื ื ืืชืื ื ืชืื ืื ืืกืืืจืื ืืคืื ืงืฆืื unserialize() . ืืืงืจื ืฉื ืืขืืืช, unserialize() ืืืฆืื ืืขืช E_WARNING ืืืงืื E_NOTICE.
- ืืืฆืขื ืฉืื ืืืื ืืคืื ืงืฆืื range(). ืืจืืื ื ืืฆืจืช ืืืฉืจ ืื ืกืื ืืืขืืืจ ืืืืืืงืืื, ืืฉืืืื ืื ืืขืจืืื ืืืฉืชื ืื ืืืืืืจืื ืืืืืืช ืืืื, ืืื ืืืฉืจ ืืฆืืื ืื ืขืจื ืฉืืืื ืืคืจืืืจ $step ืื ืขืจื ืื ืืืืืจ ืืื ืคืจืืืจ. ืืขืช ื ืืชื ืืืคืืง ืจืฉืืื ืฉื ืชืืืื ืืขืช ืฆืืื ืืืจืืืืช ืืืงืื ืืกืคืจืื (ืืืืืื, "range('5', 'z')").
- ืฉืื ื ืืช ืืืชื ืืืืช ืฉื ืชืืื ืืช ืขื ืืืคืืื ืื ืกืืืืื, ืฉืืขืช ืขืืงืคืื ืืืคืืื ืื ืกืืืืื ืฉืขืืจื ืืืจืืฉื ืืืืืงืช ืืื.
- ื ืืกืคื ืืืืจืืช ืืืื ื ืืคื ื ืืฆืคืช ืืืกื ืืช. ืืื ืืืืช zend.max_allowed_stack_size ื-zend.reserved_stack_size ื ืืกืคื ืืงืืืฅ ini, ืืืืืืจืื ืืช ืืืื ืืืืกื ืืช ืืืจืื ืืืืชืจ ืืืฉืืืจ. ืืชืืื ืืช ืชืงืจืืก ืืืฉืจ ืืชืงืจืืื ืืืืฆืื ืืืกื ืืช, ืืืฉืจ ืืขืจืืื ืืืื ืืืชืจ ืืืืคืจืฉ ืืื zend.max_allowed_stack_size ื-zend.reserved_stack_size (ืืืืฆืืข ืืืคืกืง ืืคื ื ืฉืชืชืจืืฉ ืชืงืืช ืคืืืื). ืืืจืืจืช ืืืื, ืืขืจื zend.max_allowed_stack_size ืืืืืจ ื-0 (0 - ืืืืื ื ืงืืข ืืืืืืืืช; ืืื ืืืื ืืช ืืืืืื, ืืชื ืืืื ืืืืืืจ ืืืชื ื-1).
- ื ืืกืคื ืคืื ืงืฆืืืช ืืืฉืืช ืฉื POSIX posix_sysconf(), posix_pathconf(), posix_fpathconf() ื-posix_eaccess().
- ื ืืกืคื ืืคืื ืงืฆืื mb_str_pad, ืฉืืื ืื ืืืื ืืคืื ืงืฆืืืช ืืืืจืืืช str_pad() ืืืืืขืืช ืืขืืื ืขื ืงืืืืืื ืืจืืื-ืืชืื ืืืื UTF-8.
- ืืืคืฉืจ ืื ืืืฆืืจ ืกืืืจืืช ืืฉืืืืช ืืืืขืืืจ ืืจืืืื ืืื ืืขืื ืฉื ืืกืืืจืืช ืืื. $test = new Test(); $closure = $test->magic(โฆ); $closure(a: 'hello', b: 'world');
- ืฉืื ืื ืืชื ืืืืช ืืขืช ืืืคืื ืื ืจืืืช ืฉื ืงืืืขืื ืืืืฉืงืื. ืืืฉืง 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 ืืืกืจ. ืืชืืืื ืืงืจืืื ืืคืื ืงืฆืื ldap_connect() ืขื ืฉื ื ืคืจืืืจืื $host ื-$port ืืืคืกืงื. ืืืืืจื opcache.consistency_checks ืืืกืจื.
ืืงืืจ: OpenNet.ru