PHP 8.1: موارد جدید و تغییر یافته

PHP 8.1 در حال حاضر در حال توسعه است و تا پایان سال 2021 منتشر خواهد شد.

ویژگی های جدید

  • علامت گذاری عددی هشتم صریح
  • تابع جدید `array_is_list`
  • توابع هش الگوریتم `$options` را می پذیرند
  • پشتیبانی از الگوریتم هش MurmurHash3
  • xxHash از الگوریتم های هش پشتیبانی می کند
  • Curl: پشتیبانی از DNS-over-HTTPS

تغییرات سینتکسی و تابعی

  • GD Extension: شناسه های قلم اشیا class کلاس “GdFont” هستند
  • محدودیت های متغیر `$GLOBALS`
  • FTP Extension: منابع اتصال از اشیا class کلاس “FTPConnection” هستند
  • منابع IMAP: منابع `imap` اشیا class کلاس “IMAPConnection” هستند
  • پسوند finfo: منابع `file_info` به اشیا` موجود `finfo` منتقل می شوند
  • Pspell Extension: منابع `pspell`،`pspell config` اشیا class کلاس “\\ PSpell”، “\\ PSpellConfig” هستند
  • محدودیت های عملگر `version_compare`

علامت گذاری عددی هشتم صریح

PHP از سیستم های مختلف عددی پشتیبانی می کند ، از جمله دهدهی پیش فرض (پایه -10) ، باینری (پایه -2) ، اکتال (پایه -8) و هگز (پایه -16).

سیستم های عددی جدا از اعشار با پیشوند خود پیشوند می شوند:

  • هگز با 0x پیشوند : مثلا: 0x11 = 17
  • باینری با 0b پیشوند : مثلا: 0b11 = 3
  • اکتال با ۰ پیشوند : مثلا: ۰۱۱ = ۹

در PHP 8.1 به بعد ، اعداد Octal نیز از 0o پشتیبانی می کنند. (صفر و به دنبال آن o همانند Oscar) پیشوند، که به معنای واقعی کلمات عددی هشت ضلعی است ، می تواند واضح تر و خواناتر شود که در واقع اعداد هشت عددی است. 0O (صفر و به دنبال آن حروف بزرگ مانند Oscar) نیز پشتیبانی می شود.

در بسیاری از زبانهای برنامه نویسی از 0 پیشوند برای حروف الفبا عددی هشتگانه استفاده می شود ، دقیقاً مانند PHP. با این حال ، بسیاری از زبانها از صریح نماد 0o نیز پشتیبانی می کنند و 0o را توصیه کرده اند.

echo 0xff; // 255
echo 0b111; // 7
echo 77; // 77
echo 077; // 63
echo 0o77; // 63, In PHP 8.1
echo 0O77; // 63, In PHP 8.1
077 === 63; // true
077 === 0o77; // true
077 === 0O77; // true

علاوه بر این ، جدا کننده های عددی خط زیر در حروف الفبا عددی پیشوند 0o / 0O نیز پشتیبانی می شوند:

echo 0o7716_1412; // 16573194

پیشوند ۰ تغییر نمی کند

پیشوند ۰ موجود منسوخ نشده است و عملکرد آن دقیقاً به همان شکل ادامه دارد.

پیشوندهای 0o / 0O علاوه بر پیشوند 0 موجود پشتیبانی می شوند.

هیچ تغییری در رشته های عددی وجود ندارد

رشته های عددی ، یعنی رشته هایی که حاوی یک عدد هستند ، تحت تأثیر این تغییر قرار نمی گیرند. \"0o16\" (به عنوان یک رشته) به عنوان یک عدد تفسیر نمی شود ، و برای is_numeric نیز true بر نمی گردد.

echo \"016\"; // \"016\"
is_numeric(\"0o77\"); // false
is_numeric(\"0b11\"); // false
is_numeric(\"0x16\"); // false

توجه داشته باشید که \"016\" برای is_numericمقدارtrue است و تغییر نمی کند:

تأثیر سازگاری به عقب

پیشوندهای 0o و 0O پیشوندهای جدیدی هستند که در نسخه های قدیمی PHP پشتیبانی نمی شدند. تلاش برای استفاده از آنها در نسخه های قدیمی PHP منجر به خطای نحوی می شود:

$value = 0o77;
Parse error: syntax error, unexpected identifier \"o77\" in ... on line ...
سبد خرید
پیمایش به بالا