الميزات الجديدة والمحسّنة لـ PHP 7.2.0

نشرت: 2018-03-03
يتضمن الإصدار الجديد من PHP 7.2.0 الكثير من الإضافات الرائعة. يوفر المزيد من الميزات والتحسينات الجديدة والوظائف الأفضل. إنه يمكّن المستخدم من كتابة كود أفضل واستخدام العديد من ميزات اللغة الشيقة كما لم يحدث من قبل. في هذا المنشور ، سنلقي نظرة على أحدث الجوانب التي تم تقديمها في أحدث نسخة من PHP.


يقدم التحديث الكثير من التحسينات الجديدة. يأتي مزودًا بالعديد من الميزات التي تضمن تشفيرًا أفضل. الميزات الجديدة في PHP 7.2.0 تشمل:

  • تلميح كتابة الكائن
  • عد الأشياء المختلفة غير القابلة للعد
  • تحويل المفاتيح الرقمية في مصفوفة / كائن
  • تمت إزالة ملحق Mcrypt
  • Argon2 في تجزئة كلمة المرور
  • HashContext ككائن
  • ثوابت TLS أفضل لقيم عاقلة مختلفة
  • تمديد الصوديوم الجديد

كما نعلم ، فإن مطوري الويب بشكل عام إما يحبون أو يكرهون استخدام لغة PHP. أي شخص يستمتع حقًا باستخدام PHP سيحب بالتأكيد حل الترميز الجديد هذا.

إذا كنت مطور ويب تحب العمل مع PHP ، فاقرأ فيما نناقش أهم الميزات الجديدة لتحديث PHP 7.2.0.

تحسينات أساسية في PHP 7.2.0

فيما يلي بعض التحسينات الأساسية في آخر تحديث لـ PHP.

الحل لخصائص الخلل

حتى إصدار PHP 7.2.0 ، كان هناك خطأ غير ثابت في خاصية السمات. في التحديث الأخير ، إذا حددت سمة خاصية ما ، فلا يمكن للفئة تعريف خاصية لها نفس الاسم ما لم تكن أكثر توافقًا (نفس القيمة الأولية والرؤية). خلاف ذلك ، فإنه يصدر خطأ فادح.

لذلك على عكس PHP 7 و PHP 7.1 ، يمكننا الآن توقع تلقي خطأ فادح. تم إصلاح هذا السلوك في التحديث الأخير لـ PHP ، وهو يعمل الآن كما هو مذكور في وثائق PHP. الآن يمكنك إجراء مقارنة صارمة. أثناء تشغيل البرنامج النصي في PHP 7.2 ، سيتم إخطارك بخطأ فادح.

إقرار نوع الإرجاع

يضيف التحديث الأخير لـ PHP 7 مزيدًا من الدعم لإعلانات نوع الإرجاع. تمامًا مثل تعريفات نوع الوسيطة ، يوضح نوع الإعلان هذا أيضًا نوع القيمة التي يُحتمل إرجاعها من دالة. بالنسبة للإعلان عن نوع الإرجاع ، يتم تقديم نفس الأنواع كما هي لإعلانات نوع الوسيطة.

في PHP 7.2.0 ، يتم تمكين المستخدم من استخدام تصريح نوع الإرجاع من حيث نوع بيانات الكائن.

علاوة على ذلك ، تؤثر الكتابة الصارمة أيضًا على إقرارات نوع الإرجاع. بالنظر إلى الوضع الضعيف الافتراضي ، يتم إجبار جميع القيم التي تم إرجاعها على النوع الدقيق (في حالة اختلافها وليست من هذا النوع بالفعل). ومع ذلك ، في الوضع القوي ، يجب أن تكون جميع القيم التي تم إرجاعها من النوع الدقيق / الصحيح. وإلا ، فسيتم تلقي خطأ TypeError .

ومع ذلك ، يجب أن تتطابق الطريقة الفرعية مع إعلان نوع الإرجاع مع إعلان الطريقة الأصلية عند تجاوز طريقة أصل. ولكن إذا لم يتم تحديد نوع الإرجاع بواسطة الطريقة الأصلية ، فقد تحدده الطريقة الفرعية.

تعبيرات إرجاع المولد

هذه الميزة في PHP مبنية على وظيفة تم إصدارها في PHP 5.5 تسمى وظيفة المولد. يسمح باستخدام بيان الإرجاع في المولد والسماح بإعادة التعبير النهائي. ومع ذلك ، فإن العودة عن طريق الإحالة مقيد. يمكن الحصول على القيمة باستخدام طريقة " getReturn ()" للمولدات الجديدة التي تُستخدم فقط عند انتهاء المولد بإعطاء قيم.

ومع ذلك ، فإن القدرة على إرجاع قيمة نهائية بوضوح باستخدام المولد هي بالتأكيد قدرة يدوية لامتلاكها. هذا لأنه يسمح بإرجاع القيمة النهائية بالكامل ، عن طريق المولد ، والذي يمكن التعامل معه بشكل خاص بواسطة كود العميل الذي يقوم بتنفيذ المولد. بالمقارنة ، يعد هذا أبسط بكثير من إجبار رمز العميل على التحقق أولاً مما إذا كانت القيمة النهائية قد تم إنتاجها أم لا ثم التعامل مع القيمة بشكل خاص.

خيارات الجلسة

يتعرف Session_start () الآن على الكثير من الخيارات التي تتجاوز توجيهات تكوين الجلسة المختلفة المحددة في php.ini.

تم أيضًا توسيع هذه الخيارات لتسهيل session.lazy_write ، والتي تظل قيد التشغيل افتراضيًا وتجعل PHP تستبدل أي ملف جلسة مع تغيير بيانات الجلسة فقط و read_and_close . هذا خيار يمكن تمريره فقط إلى session_start () لتأكيد وجوب قراءة بيانات الجلسة ومن ثم يجب إغلاق الجلسة على الفور مع عدم تغييرها.

تحسينات الأمان في PHP 7.2.0

فيما يلي التحسينات الأمنية الأخيرة التي تم تنفيذها في PHP 7.2.0.

خوارزمية الأرجون 2 في تجزئة كلمة المرور

يعد Argon 2 ، الفائز في مسابقة Password Hashing في عام 2005 ، خوارزمية تجزئة قوية. Argon2 في خضم الاعتراف بها كمعيار عالمي للإنترنت. حاليًا ، تعتبر الخوارزمية أكثر فعالية من حيث التكلفة وأمانًا من Bcrypt ، وهي خوارزمية تجزئة أخرى. يمكن استخدام Argon2 المدمج حديثًا عبر الوظيفة - password_hash ().

بينما يأخذ Bcrypt في الاعتبار عامل تكلفة واحدًا فقط ، فإن Argon2 الجديد يأخذ في الاعتبار عوامل التكلفة الثلاثة التالية-

  1. تكلفة الوقت- تحدد أعداد التكرارات لخوارزمية التجزئة
  2. تكلفة الذاكرة- تحدد أرقام KiB التي يجب استخدامها أثناء التجزئة.
  3. عامل التوازي- يحدد عدد الخيوط المتوازية التي سيتم استهلاكها أثناء التجزئة.

يتم تحديد عوامل التكلفة الافتراضية من خلال الثوابت الثلاثة الجديدة على النحو التالي:

  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2- خيوط افتراضية
Lib-sodium يحل محل Mcyrpt

هناك تحسن كبير آخر في PHP 7.2.0 وهو إزالة مكتبة تشفير Mcrypt التقليدية من نواة PHP وإضافة Libsodium.

تم اعتبار Mcrypt على أنها برامج مهجورة وتقييدًا لنمو اللغة. لهذا تم استبداله بـ Libsodium في PHP 7.2.0. Libsodium هي مكتبة تشفير متقدمة توفر تشفيرًا أصيلًا جنبًا إلى جنب مع تشفير منحنى بيضاوي فعال.

يتكون Libsodium من خوارزميات مختارة بعناية يتم تنفيذها بواسطة خبراء أمنيين لمنع نقاط الضعف في القناة الجانبية. بمعنى آخر ، Libsodium هي مكتبة متعددة اللغات وعبر الأنظمة الأساسية لفك التشفير والتشفير وتجزئة كلمة المرور والتوقيع وغير ذلك.


الميزات والوظائف المهملة

فيما يلي بعض الوظائف والميزات المهملة في PHP 7.2.0 والتي من المتوقع إزالتها قبل إصدار PHP 8.0.

يتم اعتبار Gmp_random () كميزة تعتمد على النظام الأساسي ومن المحتمل أن يتم إهمالها. بدلاً من ذلك ، سيتم استخدام gmp_random_rage () و gmp_random_bits () .

(unset) cast هو تعبير آخر يُرجع عادةً قيمة فارغة وبالتالي يعتبر عديم الفائدة.

يتم استخدام كل () للتكرار على foreach () مثل المصفوفة ، لكن foreach () مفضل بسبب سرعته العالية.

حل spl_autoload_register في PHP 5.1 محل وظيفة التحميل التلقائي . ولكن من المحتمل الآن أن يحدث الإهمال عند مواجهة الوظيفة أثناء التجميع.

تم أيضًا تعيين mbstring .fucc_overload للإيقاف .

تؤكد وظيفة التأكيد () التأكيد المقدم وتتخذ الإجراءات المناسبة إذا كانت هناك نتيجة FALSE . سيتم إهمال استخدام assert () مع وسيطات السلسلة لأنه يتسبب في ثغرة أمنية في RCE.

المتغير $ php_errormsg مبني في النطاق المحلي بينما يتم تلقي خطأ غير فادح. ولكن الآن ، مع إصدارات PHP 7.2.0 ، سيتم استخدام error_clear_last و error_get_last بدلاً من ذلك.

من المحتمل أن يتم إهمال $ errcontext لأن هذه الوظيفة تسبب مشاكل في التحسين. نظرًا لاستخدام الخطأ $ errcontext لتعديل جميع الكائنات والمراجع في النطاق الحالي ، نادرًا ما يتم استخدام هذه الوظيفة.

يحتوي Create_function () على العديد من مشكلات الأمان. علاوة على ذلك ، فإنه يحتوي أيضًا على مشكلات في استخدام الذاكرة والأداء السيئ.

لماذا يجب على مطور WordPress استخدام PHP 7.2.0؟

ترقيات PHP الأخيرة تجلب ميزات جديدة وتدابير أمنية محسّنة. قد يشمل ذلك عوامل مثل التشفير الحديث والإضافات إلى الميزات الأساسية وسرعة التحميل الأسرع لمختلف المواقع.

فوائد استخدام PHP

PHP هي لغة متوافقة للغاية يمكن استخدامها مع جميع المعايير العالمية لقواعد البيانات والخوادم تقريبًا (مثل PostgreSQL و MySQL و Sybase و Oracle و Microsoft SQL Server و Informix). يقدم أداء سريعًا مدعومًا من قبل مجتمع مفتوح المصدر.

يتم استخدامه لمجموعة متنوعة من الأغراض مثل إنشاء الملفات والصفحات الديناميكية. تمكنك PHP من إدارة المعلومات وتخزينها في قاعدة بيانات الموقع. يتيح للمستخدمين تشفير البيانات باستخدام ميزات الأمان ويقيد الوصول غير المصرح به إلى مواقع الويب.

يتم استخدام PHP في العديد من المواقع الشهيرة مثل Yahoo و Facebook و Wikipedia.

والأهم من ذلك ، أن التحديث الأخير لـ PHP 7.2.0 يقدم تحسينات أمنية مهمة ، وميزات جديدة مثيرة ، وتحسينات في الأداء.

أداء PHP 7.2.0

وفقًا لمعايير Phoenix ، فإن PHP 7.2.0 أسرع بنسبة 13٪ من 7.1 وحوالي 20٪ أسرع من 7.0. مقارنة بـ PHP 2.6 (لا يزال يستخدمه 40٪ من مستخدمي PHP) ، فهو أسرع بنسبة 25٪ تقريبًا.

هناك العديد من الاختبارات التي تدعم هذه الإحصائيات والنتائج. يكشف معيار PHP الرسمي أن PHP 7 أكثر كفاءة بمرتين وأسرع من 5.6. PHP 7 لديها نصف الكمون. أيضًا ، تشير معايير أخرى مثل Kinsta إلى أن PHP 7 يمكن أن تكون أسرع بثلاث مرات من الإصدارات السابقة.

كما نوقش أعلاه ، فإن السبب الرئيسي لتحسين أداء PHP 7.2.0 هو تضمين الميزات المتقدمة وإهمال الوظائف القديمة. هذا هو بالضبط ما يجعل هذا الإصدار من PHP مناسبًا تمامًا لمستخدمي WordPress. ومع ذلك ، يجب على المطورين التحقق من الكود وتحديث الوظائف المهملة للتأكد من أن كل شيء متوافق.

الدعم الأمني ​​لـ PHP 7.2.0

PHP 7.2.0 لم يعد يقدم دعمًا أمنيًا. ومع ذلك ، سيظل الدعم المهم متاحًا حتى نهاية عام 2018. لم يعد مجتمع PHP يقدم الدعم للمشكلات والأخطاء الطفيفة. الخبر السار هو أن التحديث الأخير لـ PHP 7.2.0 سيضمن عمل التحديثات الأمنية المتقدمة بشكل صحيح ، وسيتم دعم المشروع باستمرار من قبل مجتمع PHP.

Libsodium هو أهم ميزة تم تحسينها والتي انتقلت من PHP الأقدم إلى PHP 7.2.0. لحسن الحظ ، من السهل جدًا تحديث Libsodium.

إذا كنت تخطط للتحديث إلى PHP 7.2.0 ، فتأكد من أن الكود الخاص بك يتكون من اختبارات الوحدة والتكامل. ستساعد مثل هذه الاختبارات في اكتشاف أي مشكلات متعلقة بالتطبيق قبل ظهورها على أنها خطأ في بيئة حية.

شيء صغير
يعد PHP 7.2.0 بالتأكيد ترقية رئيسية مقارنة بالإصدارات السابقة مثل PHP 5.6. أثناء ترقية الكود من PHP 5.6 إلى PHP 7 ، قد تصادف بعض حالات عدم التوافق ، سواء في المكتبات التي يعتمد عليها الرمز أو في الكود نفسه. ومع ذلك ، فإن فوائد اعتماد PHP 7.2 ستجعل جهودك جديرة بالاهتمام.

نظرًا لأن PHP 7.2 أسرع بكثير من الإصدارات القديمة من PHP ، فإن هذا يسمح للمستخدم بتقديم خدمة محسّنة لمستخدمي مواقع الويب الخاصة بهم من خلال تنفيذ الأكواد المتقدمة للغة PHP.

هل أنت جاهز للتبديل إلى PHP 7.2 الجديد؟ إذا لم تقم بتحديثه بعد ، فهذا هو الوقت المناسب لبدء عملية الانتقال. حان الوقت للتحقق من الرموز وترقية البرامج النصية الخاصة بك.

أخبرنا كيف وجدت الميزات والوظائف المحسّنة الجديدة لـ PHP 7.2.0 في قسم التعليقات أدناه!