بدأ اختبار ألفا لـ PHP 8.2

تم تقديم أول إصدار ألفا من الفرع الجديد للغة برمجة PHP 8.2. الإصدار مجدول في 24 نوفمبر. الابتكارات الرئيسية المتاحة بالفعل للاختبار أو المخطط تنفيذها في PHP 8.2:

  • تمت إضافة الأنواع المنفصلة "false" و "null" ، والتي يمكن استخدامها ، على سبيل المثال ، لإرجاع علامة اكتمال مع وجود خطأ أو قيمة فارغة بواسطة دالة. في السابق ، كان يمكن استخدام "false" و "null" مع أنواع أخرى فقط (على سبيل المثال ، "string | false") ، ولكن الآن يمكن استخدامهما بشكل منفصل: function alwaysFalse (): false {return false؛ }
  • تمت إضافة القدرة على تمييز الفصل على أنه للقراءة فقط. يمكن تعيين الخصائص في هذه الفئات مرة واحدة فقط ، وبعد ذلك لن تكون متاحة للتغيير. في السابق ، كان من الممكن وضع علامة على خصائص الفئة الفردية للقراءة فقط ، ولكن يمكنك الآن تشغيل هذا الوضع لجميع خصائص الفصل الدراسي مرة واحدة. يؤدي تحديد علامة "للقراءة فقط" على مستوى الفصل الدراسي إلى حظر الإضافة الديناميكية للخصائص إلى الفصل. للقراءة فقط فئة Post {public function __construct (السلسلة العامة $ title، public Author $ author،) {}} $ post = new Post (/ *… * /)؛ $ post-> غير معروف = "خطأ" ؛ // خطأ: لا يمكن إنشاء خاصية ديناميكية Post :: $ unknown
  • تم إهمال القدرة على إنشاء الخصائص ديناميكيًا في فئة ما (مثل "post-> unknown" في المثال أعلاه). في PHP 9.0 ، سيؤدي الوصول إلى الخصائص التي لم يتم تحديدها أصلاً في الفئة إلى حدوث خطأ (ErrorException). ستستمر الفئات التي توفر أساليب __get و __set لإنشاء الخصائص ، أو الخصائص الديناميكية في stdClass في العمل دون تغيير ، وسيتم إيقاف العمل الضمني مع الخصائص غير الموجودة فقط من أجل حماية المطور من الأخطاء المخفية. للحفاظ على عمل الكود القديم ، تم اقتراح السمة "# [AllowDynamicProperties]" ، مما يسمح باستخدام الخصائص الديناميكية.
  • توفير القدرة على تصفية الإعدادات الحساسة في إخراج تتبع المكدس في وقت حدوث خطأ. قد يكون الاستغناء عن بعض المعلومات مطلوبًا عند إرسال معلومات حول الأخطاء التي تحدث تلقائيًا إلى خدمات الجهات الخارجية التي تتعقب المشكلات وتبلغ المطورين عنها. على سبيل المثال ، يمكنك استبعاد المعلمات من التتبع التي تتضمن أسماء المستخدمين وكلمات المرور ومتغيرات البيئة. اختبار الوظيفة ($ foo، # [\ SensitiveParameter] $ password، $ baz) {throw new Exception ('Error')؛ } test ('foo'، 'password'، 'baz')؛ خطأ فادح: استثناء غير معلوم: خطأ في test.php: 8 تتبع المكدس: # 0 test.php (11): test ('foo'، Object (SensitiveParameterValue)، 'baz') # 1 {main} ألقيت في test.php عبر الإنترنت 8
  • تم إهمال القدرة على استبدال القيم المتغيرة في السلاسل باستخدام التعبيرات "$ {var}" و $ {(var)} ". تم الاحتفاظ بدعم استبدالات "{$ var}" و "$ var" شائعة الاستخدام. على سبيل المثال: "مرحبًا {$ world}" ؛ موافق "Hello $ world" ؛ حسنًا "مرحبًا $ {world}" ؛ موقوف: استخدام $ {} في السلاسل مهمل
  • تم إهمال العناصر القابلة للاستدعاء المدعومة جزئيًا والتي يمكن استدعاؤها عبر "call_user_func ($ callable)" ، لكن لا تدعم الاتصال بالصيغة "$ callable ()": "self :: method" "parent :: method" "static :: الطريقة "[" self "،" method "] [" الأصل "،" method "] [" static "،" method "] [" Foo "،" Bar :: method "] [new Foo،" Bar:: method "]
  • تم تنفيذ تحويل الحالة المستقل عن الإعدادات المحلية. تعمل وظائف مثل strtolower () و strtoupper () الآن دائمًا على تحويل حالة الأحرف في نطاق ASCII ، كما هو الحال عند تعيين الإعدادات المحلية على "C".

المصدر: opennet.ru

إضافة تعليق