انتشار زبان برنامه نویسی PHP 7.4

پس از یک سال توسعه ارایه شده انتشار زبان برنامه نویسی PHP 7.4. شاخه جدید شامل یک سری ویژگی های جدید و همچنین چندین تغییر است که سازگاری را از بین می برد.

کلید پیشرفت ها در PHP 7.4:

  • خصوصیات تایپ شده - ویژگی های کلاس اکنون می تواند شامل اعلان های نوع باشد، به عنوان مثال:

    کاربر کلاس {
    public int $id;
    رشته عمومی $name;
    }

  • به اختصار نحو برای تعریف توابع "fn(parameter_list) => expr" با scope binding با مقدار. به عنوان مثال، "fn($x) => $x + $y" مشابه "$fn2 = تابع ($x) استفاده از ($y) {return $x + $y;}" است.
  • اپراتور تخصیص اختصار "??=" که می تواند برای تعریف یک مقدار پیش فرض استفاده شود ("a ??= b" مشابه "a = a ?? b" است، اگر "a" تعریف شده باشد، مقدار آن ذخیره می شود، و اگر تعریف نشده باشد به مقدار "b" اختصاص داده شده است).
  • محدود فرصت حفظ سلسله مراتب وراثت انواع در انواع بازده مشتق شده، یا توانایی معکوس کردن سلسله مراتب انواع اصلی در انواع آرگومان مشتق شده (کوواریانس نوع برگشتی و تضاد نوع آرگومان). اکنون می توان از ساختارهای زیر در PHP استفاده کرد:

    کلاس A {}
    کلاس B گسترش A {}

    تولید کننده کلاس {
    متد تابع عمومی (): A {}
    }
    class ChildProducer توسعه دهنده Producer {
    متد تابع عمومی(): B {}
    }

  • باز کردن اپراتور در داخل آرایه های "…$var"، اجازه می دهد هنگام تعریف یک آرایه جدید، آرایه های موجود را جایگزین کنید.

    $parts = ['سیب'، 'گلابی'];
    $fruits = ['موز', 'پرتقال', …$parts, 'هندوانه'];
    // ['موز'، 'پرتقال'، 'سیب'، 'گلابی'، 'هندوانه'];

  • فرصت نمایش بصری اعداد بزرگ با جداکننده در حروف عددی (1_000_000_00).
  • پشتیبانی لینک های ضعیف، که به شما امکان می دهد ارجاع به یک شی را حفظ کنید، اما جمع آوری زباله را از حذف شی مرتبط مسدود نمی کند.
  • جدید مکانیسم سریال‌سازی شی (ترکیبی از Serializable و __sleep()/__wakeup())، که جایگزین رابط Serializable شد که منسوخ خواهد شد.

    // آرایه ای را برمی گرداند که شامل تمام حالت های شی است.
    تابع عمومی __serialize(): array;

    // وضعیت یک شی را از یک آرایه بازیابی می کند
    تابع عمومی __unserialize(آرایه $data): void;

  • مجاز به پرتاب استثناها از یک روش است __toString();
  • پشتیبانی برای بارگذاری پیش بارگیری کش کد شی اضافه شده است. اضافه شدن پارامتر برای تنظیم
    opcache. پیش بارگیری، که از طریق آن می توانید یک اسکریپت PHP را مشخص کنید که با راه اندازی سرور کامپایل و اجرا شود. این اسکریپت می تواند کد عملیاتی فایل های دیگر را از طریق درج مستقیم آنها یا با استفاده از تابع ()opcache_compile_file بارگذاری کند.

  • تابع crc32c به پسوند Hash برای محاسبه جمع‌های چک با استفاده از چند جمله‌ای Castagnoli اضافه شد.
  • پشتیبانی از تابع password_hash() برای روش‌های درهم‌سازی رمز عبور argon2i و argin2id، در اجرای کتابخانه Sodium، اگر PHP بدون libargon ساخته شده باشد.
  • تابع mb_str_split()، شبیه به str_split() اضافه شد، اما نه با بایت بلکه با موقعیت کاراکترها در یک رشته چند بایتی کار می کند.
  • تابع strip_tags () اکنون این توانایی را دارد که آرایه ای را با نام تگ ها ارسال کند. به جای strip_tags($str, ' ') اکنون می توانید strip_tags ($str, ['a', 'p']) را مشخص کنید.
  • () proc_open به عملوندها اجازه می دهد تا در یک آرایه لیست شوند، به جای یک رشته برای اجرا، و همچنین هدایت رشته و پشتیبانی از یک توصیفگر فایل تهی را فراهم می کند.

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // مانند 2>&1 در پوسته
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // مانند 2>/dev/null یا 2>nul در پوسته
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • افزونه های Firebird/Interbase، Recode و WDDX از توزیع اصلی مستثنی هستند. این پسوندها اکنون از طریق PECL توزیع می شوند.
  • به دسته منتقل شد منسوخ شده ویژگی هایی مانند عملگرهای سه تایی تو در تو بدون پرانتز، دسترسی به عناصر آرایه و رشته ها با استفاده از مهاربندهای فرفری ("$var{$idx}")، is_real() و ارسال به real، استفاده از کلمه کلیدی والد بدون کلاس والد، تنظیمات پارامتر allow_url_include، با استفاده از array_key_exists() روی اشیا.

    توابع get_magic_quotes_gpc()، get_magic_quotes_runtime()، و
    hebrevc()، convert_cyr_string()، money_format()، ezmlm_hash()، restore_include_path()، ldap_control_paged_result_response()، ldap_control_paged_result()، ReflectionType::__toString().

    هنگام تلاش برای پردازش نمادهای نادرست در توابع، هشداری در مورد استفاده از یک ویژگی منسوخ ارائه شده است.
    base_convert()، bindec()، octdec() و hexdec()، و زمانی که یک الگوی غیر رشته ای در mb_ereg_replace().

منبع: opennet.ru

اضافه کردن نظر