إصدار لغة البرمجة PHP 7.4

بعد عام من التطوير المقدمة إصدار لغة البرمجة PHP 7.4. يتضمن الفرع الجديد سلسلة من الميزات الجديدة، بالإضافة إلى العديد من التغييرات التي تؤدي إلى كسر التوافق.

مفتاح تحسينات في PHP 7.4:

  • الخصائص المكتوبة - يمكن لخصائص الفئة الآن أن تتضمن إعلانات النوع، على سبيل المثال:

    فئة المستخدم {
    معرف $ int العام ؛
    سلسلة عامة اسم $؛
    }

  • مختصر بناء جملة لتحديد الوظائف "fn(parameter_list) => expr" مع ربط النطاق حسب القيمة. على سبيل المثال، "fn($x) => $x + $y" يماثل "$fn2 = function ($x) use ($y) {return $x + $y;}");
  • عامل التعيين المختصر "؟؟=" والتي يمكن استخدامها لتحديد قيمة افتراضية ("a ??= b" تشبه "a = a ?? b"، إذا تم تعريف "a" فسيتم تخزين قيمتها، وإذا لم يتم تعريفها تم تعيين القيمة "ب" );
  • محدود فرصة الحفاظ على التسلسل الهرمي الميراث للأنواع في أنواع الإرجاع المشتقة، أو القدرة على عكس التسلسل الهرمي للأنواع الأصلية في أنواع الوسائط المشتقة (التغاير نوع الإرجاع وتناقض نوع الوسيطة). يمكن الآن استخدام التركيبات التالية في PHP:

    الفئة أ {}
    الفئة ب تمتد أ {}

    منتج الصف {
    طريقة الوظيفة العامة (): أ {}
    }
    يمتد فئة ChildProducer إلى المنتج {
    طريقة الوظيفة العامة (): ب {}
    }

  • عامل التفريغ داخل المصفوفات "...$var"، السماح إجراء استبدال المصفوفات الموجودة عند تعريف مصفوفة جديدة؛

    $parts = ['تفاحة'، 'كمثرى']؛
    $fruits = [‘banana’, ‘orange’, …$parts, ‘watermelon’];
    // ["موز"، "برتقالي"، "تفاح"، "كمثرى"، "بطيخ"];

  • فرصة التمثيل المرئي لأعداد كبيرة مع محددات بالأحرف الرقمية (1_000_000_00)؛
  • Поддержка روابط ضعيفة، والتي تسمح لك بالاحتفاظ بمرجع إلى كائن، ولكن لا تمنع جامع البيانات المهملة من حذف الكائن المرتبط؛
  • جديد تقنية تسلسل الكائنات (مزيج من Serializable و __sleep()/__wakeup())، والذي حل محل الواجهة القابلة للتسلسل، والتي سيتم إهمالها؛

    // إرجاع مصفوفة تحتوي على كافة حالات الكائن؛
    الوظيفة العامة __serialize(): array;

    // يستعيد حالة الكائن من المصفوفة
    الوظيفة العامة __unserialize(array $data): void;

  • Разрешена генерация исключений из метода __إلى سلسلة();
  • تمت إضافة دعم للتحميل المسبق لذاكرة التخزين المؤقت لرمز الكائن. تمت إضافة المعلمة للإعداد
    opcache.preload، والتي يمكنك من خلالها تحديد برنامج PHP النصي الذي سيتم تجميعه وتشغيله عند بدء تشغيل الخادم. يمكن لهذا البرنامج النصي تحميل كود التشغيل للملفات الأخرى من خلال تضمينها المباشر أو باستخدام وظيفة opcache_compile_file()؛

  • تمت إضافة وظيفة crc32c إلى ملحق التجزئة لحساب المجموع الاختباري باستخدام متعدد الحدود 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() والتحويل إلى كلمة حقيقية، باستخدام الكلمة الأساسية الأصلية بدون فئة أصلية، وتكوينات المعلمةallow_url_include باستخدام array_key_exists() على الكائنات.

    الوظائف get_magic_quotes_gpc() و get_magic_quotes_runtime() و
    hebrevc(), converter_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

إضافة تعليق