Kutolewa kwa lugha ya programu ya PHP 8.3

Baada ya mwaka wa maendeleo, kutolewa kwa lugha ya programu ya PHP 8.3 iliwasilishwa. Tawi jipya linajumuisha mfululizo wa vipengele vipya, pamoja na mabadiliko kadhaa ambayo yanavunja utangamano.

Mabadiliko muhimu katika PHP 8.3:

  • Wakati wa uundaji wa darasa, inawezekana kurejesha mali na sifa ya "kusoma tu". Kubatilisha sifa za kusoma pekee kunaruhusiwa ndani ya chaguo za kukokotoa za "__clone" pekee: Chapisho la darasa la kusoma pekee { kazi ya umma __construct( public DateTime $createdAt, ) {} chaguo la kukokotoa la umma __clone() {$this->createdAt = new DateTime(); // inaruhusiwa ingawa mali ya "createdAt" inasomwa tu. }}
  • Uwezo wa kutumia viunga vyenye dalili ya aina katika madarasa, sifa na hesabu umetolewa: darasa Foo { const string BAR = 'baz'; }
  • Usaidizi umeongezwa kwa sifa ya "#[Batilisha]", ambayo msanidi programu anaweza kumjulisha mkalimani kuwa mbinu iliyotiwa alama inabatilisha baadhi ya mbinu ya mzazi. Ikiwa hakuna ubatilishaji, mkalimani ataonyesha hitilafu.
  • Ushughulikiaji uliobadilishwa wa maadili hasi kama faharasa ya safu. Kwa mfano, wakati wa kuongeza kipengee kilicho na nambari "-5" kwa safu tupu na kuongeza kipengee kingine, hapo awali kipengele cha pili kilihifadhiwa na index "0", lakini kuanzia toleo la PHP 8.3 litahifadhiwa na index "-4" . $safu = []; $safu[-5] = 'a'; $array[] = 'b'; var_export(safu ya $); // Ilikuwa ni safu (-5 => 'a', 0 => 'b') // Ikawa safu (-5 => 'a', -4 => 'b')
  • Imeongeza uwezo wa kuunda madarasa yasiyojulikana katika hali ya kusoma pekee: $class = darasa jipya la kusoma pekee { public function __construct( public string $foo = 'bar', ) {} };
  • Imeongeza kitendakazi cha json_validate() ili kuangalia kwa haraka ikiwa mfuatano uko katika umbizo la JSON bila kufanya shughuli za kusimbua. json_validate(kamba $json, int $depth = 512, int $flags = 0): bool
  • Mbinu mpya zimeongezwa kwa darasa la Randomizer, ambalo hutoa API ya kiwango cha juu kwa ajili ya kuzalisha nambari na mfuatano wa pseudo-random: getBytesFromString kwa ajili ya kuzalisha mfuatano wa ukubwa fulani, kwa kutumia kwa mpangilio nasibu herufi zilizopo kwenye mfuatano mwingine; getFloat na nextFloat ili kutoa nambari ya uhakika ya kuelea bila mpangilio ambayo iko ndani ya masafa maalum.
  • Imeongeza uwezo wa kupata viunga kwa kutumia syntax ya darasa inayobadilika: darasa Foo { const BAR = 'bar'; } $name = 'BAR'; // Hapo awali, ili kurejesha BAR mara kwa mara, ilibidi upige simu constant(Foo::class . '::' . $name); // Sasa taja tu Foo::{$name};
  • Kizazi kilichoongezwa cha vighairi vya watu binafsi (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) iwapo kutatokea matatizo katika utendakazi wa kufanya kazi kwa kuzingatia tarehe na saa.
  • Ushughulikiaji ulioboreshwa wa hitilafu zinazotokea wakati wa uchanganuzi wa data iliyosasishwa katika chaguo za kukokotoa za unserialize(). Kukitokea matatizo, futa () sasa inatoa E_WARNING badala ya E_NOTICE.
  • Mabadiliko yamefanywa kwa anuwai() chaguo la kukokotoa. Isipokuwa huzalishwa wakati wa kujaribu kupitisha vitu, rasilimali au safu katika vigeu vinavyofafanua mipaka ya masafa, na vile vile wakati wa kubainisha thamani hasi katika kigezo cha $step au thamani isiyobainishwa katika kigezo chochote. Orodha ya vibambo sasa inaweza kutolewa wakati wa kubainisha mifuatano badala ya nambari (kwa mfano, "range('5', 'z')").
  • Ilibadilisha tabia ya sifa zilizo na sifa tuli, ambazo sasa zinabatilisha sifa tuli zilizorithiwa kutoka kwa darasa la mzazi.
  • Mipangilio iliyoongezwa ya ulinzi wa kufurika kwa rafu. Maagizo ya zend.max_allowed_stack_size na zend.reserved_stack_size yameongezwa kwenye faili ya ini, kubainisha ukubwa wa juu unaoruhusiwa na uliohifadhiwa wa rafu. Programu itaacha kufanya kazi inapokaribia kuisha kwa rafu, wakati rafu imejaa zaidi ya tofauti kati ya zend.max_allowed_stack_size na zend.reserved_stack_size (utekelezaji utakoma kabla hitilafu ya sehemu kutokea). Kwa chaguo-msingi, thamani ya zend.max_allowed_stack_size imewekwa kuwa 0 (0β€”ukubwa hubainishwa kiotomatiki; ili kuzima kizuizi, unaweza kuiweka -1).
  • Imeongeza vitendaji vipya vya POSIX posix_sysconf(), posix_pathconf(), posix_fpathconf() na posix_eaccess().
  • Chaguo za kukokotoa za mb_str_pad zimeongezwa, ambayo ni analogi ya str_pad() chaguo za kukokotoa za kamba, iliyoundwa kufanya kazi na usimbaji wa baiti nyingi kama vile UTF-8.
  • Hukuruhusu kuunda kufungwa kutoka kwa mbinu na kupitisha hoja zilizotajwa kwa kufungwa huko. $ mtihani = Mtihani mpya (); $ kufungwa = $ test-> uchawi (…); $ closure(a: 'hello', b: 'dunia');
  • Tabia iliyobadilishwa wakati wa kushughulikia mwonekano wa viunga kwenye miingiliano. interface I { public const FOO = 'foo'; } zana za darasa C I { private const FOO = 'foo'; }
  • Uwezo wa array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() na proc_get_status() umepanuliwa.
  • Uwezo wa kupitisha thamani hasi ya $widths kwa mb_strimwidth() umeacha kutumika. Nambari ya Formatter::TYPE_CURRENCY isiyobadilika imeondolewa. Usaidizi wa kupiga chaguo la kukokotoa la ldap_connect() lenye vigezo viwili $host na $port umekatishwa. Mipangilio ya opcache.consistency_checks imeondolewa.

Chanzo: opennet.ru

Kuongeza maoni