Lëshimi i gjuhës së programimit PHP 8.3

Pas një viti zhvillimi, u prezantua lëshimi i gjuhës së programimit PHP 8.3. Kjo degë e re përfshin një seri mundësish të reja, si dhe disa ndryshime që cënojnë kompatibilitetin.

Ndryshimet kryesore në PHP 8.3:

  • GjatĂ« klonimit tĂ« klasave, u dha mundĂ«sia e ri-inicializimit tĂ« pronave me atributin «readonly». Riprogramimi i pronave readonly lejohet vetĂ«m brenda funksionit «__clone»: readonly class Post { public function __construct( public DateTime $createdAt, ) {} public function __clone() { $this->createdAt = new DateTime(); // e lejuar, pavarĂ«sisht se prona «createdAt» Ă«shtĂ« e qasshme vetĂ«m nĂ« modin pĂ«r tĂ« lexuar. } }
  • U lejua pĂ«rdorimi i konstantave me specifikim tipi nĂ« klasa, tipe dhe enumeracione: class Foo { const string BAR = ‘baz’; }
  • U shtua mbĂ«shtetje pĂ«r atributin «#[Override]», me anĂ« tĂ« tĂ« cilit zhvilluesi mund tĂ« informojĂ« interpretorin se metoda e etiketuar e tejkalon njĂ« metodĂ« prind. NĂ« rast se nuk ka tejkalim, interpretorit do t’i dalĂ« njĂ« gabim.
  • U ndryshua pĂ«rpunimi i vlerave negative si indekse tĂ« array-ve. PĂ«r shembull, kur shtohet njĂ« element nĂ« njĂ« array tĂ« zbrazĂ«t me numrin «-5» dhe shtohet njĂ« tjetĂ«r element, mĂ« parĂ« elementi i dytĂ« ruhej me indeks «0», ndĂ«rsa duke filluar nga versioni PHP 8.3 do tĂ« ruhet me indeks «-4». $array = []; $array[-5] = ‘a’; $array[] = ‘b’; var_export($array); // Ishte array (-5 => ‘a’, 0 => ‘b’) // U bĂ« array (-5 => ‘a’, -4 => ‘b’)
  • U shtua mundĂ«sia pĂ«r tĂ« krijuar klasa anonime nĂ« modin vetĂ«m pĂ«r tĂ« lexuar: $class = new readonly class { public function __construct( public string $foo = ‘bar’, ) {} };
  • U shtua funksioni json_validate() pĂ«r verifikimin e shpejtĂ« tĂ« pĂ«rputhshmĂ«risĂ« sĂ« njĂ« stringu me formatin JSON pa realizuar operacione dekodimi. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • NĂ« klasĂ«n Randomizer, e cila ofron njĂ« API tĂ« nivelit tĂ« lartĂ« pĂ«r gjenerimin e numrave dhe sekuencave pseudo-rastĂ«sore, janĂ« shtuar metoda tĂ« reja: getBytesFromString pĂ«r formimin e njĂ« stringu me madhĂ«si tĂ« caktuar, duke pĂ«rdorur nĂ« mĂ«nyrĂ« rastĂ«sore karakteret qĂ« janĂ« tĂ« pranishme nĂ« njĂ« string tjetĂ«r; getFloat dhe nextFloat pĂ«r gjenerimin e njĂ« numri rastĂ«sor me pikĂ« fluturuese, qĂ« bie brenda njĂ« intervali tĂ« caktuar.
  • U shtua mundĂ«sia e nxjerrjes sĂ« konstantave duke pĂ«rdorur sintaksĂ«n e klasave dinamike: class Foo { const BAR = ‘bar’; } $name = ‘BAR’; // MĂ« parĂ« pĂ«r tĂ« nxjerrĂ« konstantĂ«n BAR duhej tĂ« thĂ«rrisje constant(Foo::class . ‘::’ . $name); // NdĂ«rsa tani mjafton tĂ« thuash Foo::{$name};
  • U shtua gjenerimi i pĂ«rjashtimeve tĂ« veçanta (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) nĂ« rast tĂ« problemeve tĂ« ndodhura gjatĂ« operacioneve me data dhe kohĂ«.
  • U pĂ«rmirĂ«sua pĂ«rpunimi i gabimeve qĂ« ndodhin gjatĂ« analizĂ«s sĂ« tĂ« dhĂ«nave tĂ« serializuara nĂ« funksionin unserialize(). NĂ« rast probleme, unserialize() tani jep kodin E_WARNING nĂ« vend tĂ« E_NOTICE.
  • U bĂ«nĂ« ndryshime nĂ« funksionin range(). U sigurua gjenerimi i njĂ« pĂ«rjashtimi nĂ« rast tĂ« pĂ«rpjekjes pĂ«r tĂ« kaluar objekte, burime ose array nĂ« variablat qĂ« pĂ«rcaktojnĂ« kufijtĂ« e intervalit, si dhe nĂ« rast tĂ« dhĂ«nies sĂ« njĂ« vlere negative nĂ« parametrin $step ose njĂ« vlere tĂ« pacaktuar nĂ« çdo parameter. U garantua dalja e listĂ«s sĂ« karaktereve kur jepen stringa nĂ« vend tĂ« numrave (pĂ«r shembull, «range(‘5’, ‘z’)»).
  • U ndryshua sjellja e tipave me pronat statike, tĂ« cilat tani riprogramojnĂ« pronat statike tĂ« trashĂ«guara nga klasa prind.
  • U shtuan konfigurime pĂ«r mbrojtjen nga mbipopullimi i stack-ut. NĂ« skedarin ini u shtuan drejtimez zend.max_allowed_stack_size dhe zend.reserved_stack_size, qĂ« pĂ«rcaktojnĂ« madhĂ«sinĂ« maksimale tĂ« lejuar dhe tĂ« rezervuar tĂ« stack-ut. Programi do tĂ« pĂ«rfundojĂ« me njĂ« gabim kur tĂ« afronte nĂ« shterjen e stack-ut, kur stack-u Ă«shtĂ« i mbushur mĂ« shumĂ« se diferenca mes vlerave tĂ« zend.max_allowed_stack_size dhe zend.reserved_stack_size (ekzekutimi do tĂ« ndalet pa arritur nĂ« situatĂ«n e gabimit tĂ« segmentimit). Me tĂ« dhĂ«na tĂ« paracaktuara, vlera e zend.max_allowed_stack_size Ă«shtĂ« vendosur nĂ« 0 (0 - madhĂ«sia pĂ«rcaktohet automatikisht, pĂ«r tĂ« çaktivizuar kufizimin mund tĂ« vendoset -1).
  • U shtuan funksione tĂ« reja POSIX: posix_sysconf(), posix_pathconf(), posix_fpathconf() dhe posix_eaccess().
  • U shtua funksioni mb_str_pad, i cili Ă«shtĂ« njĂ« analog i funksionit tĂ« stringut str_pad(), i projektuar pĂ«r tĂ« punuar me kodime shumĂ«-byte, si UTF-8.
  • U lejuan krijimi i closures nga metodat dhe kalimi i argumenteve tĂ« emĂ«rtuara nĂ« kĂ«to closures. $test = new Test(); $closure = $test->magic(
); $closure(a: ‘hello’, b: ‘world’);
  • U ndryshua sjellja gjatĂ« pĂ«rpunimit tĂ« dukshmĂ«risĂ« sĂ« konstantave nĂ« interface. interface I { public const FOO = ‘foo’; } class C implements I { private const FOO = ‘foo’; }
  • U zgjeruan mundĂ«sitĂ« e funksioneve array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() dhe proc_get_status().
  • ËshtĂ« shpallur e vjetruar mundĂ«sia pĂ«r kalimin e njĂ« vlerĂ« negative $widths nĂ« mb_strimwidth(). ËshtĂ« hequr konstanta NumberFormatter::TYPE_CURRENCY. ËshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r thirrjen e funksionit ldap_connect() me dy parametra $host dhe $port. ËshtĂ« hequr konfigurimi opcache.consistency_checks.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster