Жилийн турш хөгжүүлсний дараа PHP 8.3 програмчлалын хэлийг танилцуулав. Шинэ салбар нь хэд хэдэн шинэ функцууд, түүнчлэн нийцтэй байдлыг зөрчсөн хэд хэдэн өөрчлөлтийг багтаасан болно.
PHP 8.3 дахь гол өөрчлөлтүүд:
- Ангиудын клончлолын үед шинж чанарыг "зөвхөн уншигдах" шинж чанараар дахин эхлүүлэх боломжтой. Зөвхөн унших шинж чанаруудыг зөвхөн “__clone” функц дотор хүчингүй болгохыг зөвшөөрнө: зөвхөн унших анги Post { public function __construct( public DateTime $createdAt, ) {} public function __clone() { $this->createdAt = new DateTime(); // "createdAt" шинж чанар нь зөвхөн унших боломжтой байсан ч зөвшөөрнө. } }
- Төрөл заалттай тогтмолуудыг анги, шинж чанар, тоололд ашиглах боломжийг олгосон: class Foo { const string BAR = 'baz'; }
- “#[Override]” атрибутын дэмжлэгийг нэмсэн бөгөөд үүний тусламжтайгаар хөгжүүлэгч тайлбарлагчид тэмдэглэсэн арга нь зарим эх аргыг дарж байгааг мэдэгдэнэ. Хэрэв хүчингүй болгох зүйл байхгүй бол орчуулагч алдаа харуулах болно.
- Сөрөг утгыг массивын индекс болгон өөрчилсөн. Жишээлбэл, хоосон массив дээр "-5" тоотой элемент нэмж, өөр элемент нэмэх үед өмнө нь хоёр дахь элементийг "0" индексээр хадгалдаг байсан бол PHP 8.3 хувилбараас эхлэн "-4" индексээр хадгалагдах болно. . $массив = []; $массив[-5] = 'a'; $array[] = 'b'; var_export ($ массив); // байсан массив (-5 => 'a', 0 => 'b') // массив болсон (-5 => 'a', -4 => 'b')
- Зөвхөн унших горимд нэргүй анги үүсгэх чадварыг нэмсэн: $class = newly readonly class { public function __construct( public string $foo = 'bar', ) {} };
- Код тайлах үйлдэл хийлгүйгээр мөр нь JSON форматтай эсэхийг хурдан шалгахын тулд json_validate() функцийг нэмсэн. json_validate(string $json, int $depth = 512, int $flags = 0): bool
- Pseudo-санамсаргүй тоо болон дарааллыг үүсгэх өндөр түвшний API-г хангадаг Randomizer ангид шинэ аргууд нэмэгдсэн: getBytesFromString өөр мөрөнд байгаа тэмдэгтүүдийг санамсаргүй дарааллаар ашиглан өгөгдсөн хэмжээтэй мөр үүсгэх; getFloat болон nextFloat-ийг ашиглан заасан мужид багтах санамсаргүй хөвөгч цэгийн тоог үүсгэнэ.
- Динамик ангиллын синтакс ашиглан тогтмолуудыг олж авах чадварыг нэмсэн: class Foo { const BAR = 'bar'; } $name = 'BAR'; // Өмнө нь BAR тогтмолыг авахын тулд та тогтмол (Foo::class . '::' . $name); // Одоо зөвхөн Foo::{$name}-г зааж өгнө үү;
- Огноо, цагтай ажиллахад асуудал гарсан тохиолдолд бие даасан үл хамаарах зүйлүүд (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) нэмэгдсэн.
- unserialize() функц дэх цуваажсан өгөгдлийг задлан шинжлэх явцад гарч буй алдааг зохицуулах сайжруулсан. Асуудал гарсан тохиолдолд unserialize() одоо E_NOTICE-ийн оронд E_WARNING-г өгнө.
- 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() нэмсэн.
- UTF-8 гэх мэт олон байт кодчилолтой ажиллахад зориулагдсан str_pad() string функцийн аналог болох mb_str_pad функц нэмэгдсэн.
- Аргуудаас хаалт үүсгэх, тэдгээр хаалт руу нэрлэсэн аргументуудыг дамжуулах боломжийг танд олгоно. $test = шинэ тест(); $хаалт = $тест->шидэт(...); $хаалт(a: 'сайн уу', b: 'дэлхий');
- Интерфейс дэх тогтмолуудын харагдах байдлыг зохицуулах үед зан төлөв өөрчлөгдсөн. интерфэйс I { public const FOO = 'foo'; } анги 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 тохиргоог устгасан.
Эх сурвалж: opennet.ru