د پی ایچ پی 8.1 پروګرام کولو ژبه خپرول

د یو کال پراختیا وروسته، د PHP 8.1 پروګرام کولو ژبه خوشې شوه. په نوې څانګه کې یو لړ نوي ځانګړتیاوې شاملې دي، په بیله بیا یو شمیر بدلونونه چې مطابقت ماتوي.

په PHP 8.1 کې کلیدي پرمختګونه:

  • د شمیرنې لپاره ملاتړ اضافه شوی، د بیلګې په توګه، تاسو اوس کولی شئ لاندې جوړښتونه وکاروئ: د enum Status { case Pending; فعاله قضیه قضیه آرشیف شوې؛ } ټولګي پوسټ { عامه فنکشن __ ساختمان( خصوصي حالت $status = Status::Pending; ) {} عامه فعالیت setStatus(status $status): void { // … } } $post->setStatus(Status::Active);
  • د فایبر په نوم د سپک وزن لرونکي تارونو لپاره ملاتړ اضافه شوی ، کوم چې تاسو ته اجازه درکوي په ټیټه کچه د اعدام تارونو اداره کړئ. د فایبر ملاتړ پلان شوی چې د Amphp او ReactPHP چوکاټونو کې اضافه شي. $fiber = نوی فایبر (فعال (): باطل { $valueAfterResuming = فایبر:: تعلیق ('د تعلیق وروسته')؛ // … }); $valueAfterSuspending = $fiber->start(); $fiber->بیا پیل ('بیا پیل کولو وروسته')؛
  • د اعتراض کوډ کیچ (opcache) پلي کول ښه شوي، د ټولګي میراث په اړه د معلوماتو زیرمه کول ممکن کړي. اصلاح کول دا ممکنه کړې چې د ځینې غوښتنلیکونو فعالیت 5-8٪ زیات کړي. په نورو اصلاحونو کې د JIT عملیات اصلاح کول، د ARM64 جوړښت (AArch64) لپاره د JIT مالتړ پلي کول، د نوم حل ګړندی کول، د مهال ویش او تاریخ / نیټې کتابتونونو اصلاح کول، د سیریلائزیشن او ډیسیریل کولو فعالیت زیاتول، د get_declared_classes اصلاح ()، explo() , strtr() فنکشن، strnatcmp()، dechex(). په عموم کې، د سیمفوني ډیمو لپاره په فعالیت کې 23.0٪ زیاتوالی شتون لري، او د WordPress لپاره 3.5٪.
  • د "...$var" دننه د پیک کولو آپریټر، کوم چې د نوي سري تعریف کولو په وخت کې د موجوده صفونو بدیل ته اجازه ورکوي، د سټینګ کیلي مالتړ لپاره غزول شوي (پخوا یوازې ډیجیټل پیژندونکي ملاتړ کیده). د مثال په توګه، تاسو اوس کولی شئ په کوډ کې کار واخلئ: $array1 = ["a" => 1]؛ $array2 = ["b" => 2]؛ $array = ["a" => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1، "b" => 2]
  • دا اجازه لري چې د "نوي" کلیدي کلمې په ابتدایي کولو کې وکاروي، لکه د فنکشن تعریفونو کې د ډیفالټ پیرامیټر په توګه یا د دلیل ځانګړتیاو کې. ټولګي MyController { عامه فعالیت __construct( خصوصي لوګر $logger = نوی NullLogger()، ) {} }
  • دا ممکنه ده چې یوازې د لوستلو لاسرسي لپاره د ټولګي ملکیتونه په نښه کړئ (په داسې ملکیتونو کې معلومات یوازې یو ځل لیکل کیدی شي، وروسته له دې چې دا د بدلون لپاره شتون نلري). د ټولګي پوسټ ډیټا { عامه فعالیت __ ساختمان (د عامه لوستلو لپاره یوازې $ سرلیک، د عامه لوستلو یوازې نیټه وخت د بدلون وړ $ نیټه، ) {} } $ پوسټ = نوی پوسټ ('سرلیک'، /* … */); $post->عنوان = 'نور'؛ > تېروتنه: یوازې د لوستلو ملکیت بدلولی نشي Post::$title
  • د غوښتنې وړ شیانو لپاره یو نوی ترکیب پلي شوی - یو بند اوس د فنکشن په زنګ وهلو او د "..." ارزښت په ورکولو سره رامینځته کیدی شي د دلیل په توګه (د مثال په توګه myFunc(...) د Closure::fromCallable('myFunc) پرځای ')): فنکشن foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • د تقاطع ډولونو لپاره بشپړ ملاتړ اضافه شوی ، تاسو ته اجازه درکوي د موجوده سره یوځای کولو سره نوي ډولونه رامینځته کړئ. د اتحادیې ډولونو برخلاف ، کوم چې د دوه یا ډیرو ډولونو راټولول تعریفوي ، د تقاطع ډولونه د لیست شوي ډولونو شتون ته اړتیا نلري ، مګر په سیټ کې ټول ټاکل شوي ډولونه باید ډک شي. فنکشن generateSlug(HasTitle&HasId $post) { بیرته ستنیدنه strtolower($post->getTitle()). $post->getId(); }
  • دلته یو نوی ډول "هیڅکله نه" شتون لري چې د جامد تحلیل کونکو ته د خبر ورکولو لپاره کارول کیدی شي چې یو فنکشن به د برنامه اجرا کول پای ته ورسوي ، د مثال په توګه د استثنا په اچولو یا د وتلو فنکشن اجرا کول. فنکشن dd (مخلوط $input): هیڅکله { exit; }
  • یو نوی فنکشن array_is_list وړاندیز شوی، کوم چې تاسو ته اجازه درکوي معلومه کړئ چې په صف کې کیلي د شمیرو ارزښتونو د زیاتوالي په ترتیب سره تنظیم شوي، د 0 څخه پیل کیږي: $list = ["a"، "b"، "c"]؛ array_is_list($list); // ریښتیا $notAList = [1 => "a"، 2 => "b"، 3 => "c"]؛ array_is_list($notAList); // false $alsoNotAList = ["a" => "a" "b" => "b" "c" => "c"]; array_is_list($alsoNotAList); // دروغ
  • تاسو اوس کولی شئ د "وروستۍ" کلیدي کلمه وکاروئ ترڅو د والدینو ټولګي دوامونه له تکرار څخه مخنیوی وکړئ. کلاس Foo { حتمي عامه کانسټ X = "foo"؛ } ټولګي بار Foo { public const X = "bar" پراخوي؛ > وژونکې تېروتنه: بار:: ایکس نه شي کولی وروستی ثابت فو:: ایکس }
  • د fsync او fdatasync افعال وړاندیز شوي ترڅو بدلونونه مجبور کړي ترڅو د ډیسک کیچ څخه خوندي شي. $file = fopen("sample.txt", "w"); fwrite($file, "ځینې مینځپانګه"); که (fsync($file)) { echo "دوتنه په بریالیتوب سره ډیسک ته دوام ورکوي."; } fclose($file);
  • د اوکټل شمیرو لپاره د مخکیني "0o" او "0O" کارولو وړتیا اضافه کړه ، د مخکیني کارول شوي مختګ "0" سربیره. 016 === 0o16; // رښتیا ۰۱۶ === ۰O016; // ریښتیا
  • دا وړاندیز شوی چې په انتخابي ډول د $GLOBALS کارول محدود کړي، کوم چې به د شاته مطابقت څخه سرغړونه وکړي، مګر دا به دا ممکنه کړي چې د سرې سره عملیات د پام وړ چټک کړي. د مثال په توګه، $GLOBALS ته د لیکلو غیر فعالولو او د پوائنټر لخوا د $GLOBALS تیرولو امکان په پام کې نیول کیږي. د 2000 کڅوړو تحلیل ښودلې چې یوازې 23 به د دې بدلون لخوا اغیزمن شي. د مثال په توګه، که وړاندیز تصویب شي، 8.1 به نور د بیانونو ملاتړ ونه کړي لکه: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; بې ترتیبه ​​($GLOBALS); by_ref($GLOBALS);
  • داخلي میتودونه باید اوس سم ډول بیرته راولي. په PHP 8.1 کې، د یو ډول بیرته راستنیدل چې د فنکشن اعالمیې سره سمون نه لري یو خبرداری تولیدوي، مګر په PHP 9.0 کې خبرداری به د غلطۍ سره بدل شي.
  • د منابعو کارولو څخه د شیانو د مینځلو لپاره د دندو لیږد ته دوام ورکړ. د finfo_* او imap_* افعال څیزونو ته لیږدول شوي.
  • د داخلي دندو ته د دلیل په توګه د غیر منحل ارزښتونو لیږدول غیر منحل شوي په نښه شوي. په PHP 8.1 کې، د ساختمانونو کارول لکه str_contains("string"، null) به د اخطار لامل شي، او په PHP 9 کې د تېروتنې لامل شي.
  • د MurmurHash3 او xxHash هیشینګ الګوریتمونو لپاره ملاتړ اضافه شوی.

سرچینه: opennet.ru

Add a comment