كيف تؤثر التغييرات في PHP 8 الجديدة على أداء موقع WordPress الخاص بك
نشرت: 2023-05-04باعتبارها واحدة من أفضل لغات البرمجة اليوم ، تقدم PHP طرقًا جديدة لجعل تطوير الويب والترميز أكثر مرونة. مع تقديم PHP 8.0 و PHP 8.1 ، تهدف PHP إلى تقديم المزيد إلى الطاولة بميزات جديدة توفر بنية أفضل وأمانًا وغير ذلك الكثير.
استمر في القراءة أدناه لمعرفة المزيد حول الجديد في PHP 8.0 وجميع وظائفه الخاصة. اكتشف جميع التحديثات والتحسينات الرئيسية من الإصدارات السابقة وكيف يمكن أن تؤثر على موقع WordPress الخاص بك.
فهم تحديث PHP 8.0
يقدم تحديث PHP 8.0 تغييرات كبيرة للمطورين والمواقع على مستوى العالم. تم إصداره في عام 2020 ، ووعد بميزات وتحسينات جديدة تتباهى بشكل عام بأداء أفضل ، وبناء الجملة ، وسلامة النوع ، ومعالجة الأخطاء من خلال طلب التعليقات المبتكر (RFC) والوظائف الأخرى.
في حين أن الاختلاف في الأداء ليس ملحوظًا مثل الفرق بين PHP 5 و PHP 7 ، فإن PHP 8.0 توفر تحسينات ثابتة مع كل إصدار. بالإضافة إلى ذلك ، فإن معظم التغييرات في PHP 7 حتى PHP 7.4 مهملة في الغالب.
يقدم كل من PHP 8.0 و PHP 8.1 وظائف جديدة لمساعدة المطورين على البرمجة بشكل أسرع وأكثر مرونة. فيما يلي بعض أكثر العروض الجديرة بالملاحظة التي يجب على المطورين أخذها في الاعتبار.
تجميع في الوقت المناسب
يعد مترجم Just-in-time أو JIT أحد أفضل الميزات الجديدة في أحدث إصدارات PHP. من خلال RFC هذا ، يمكن للمطورين تجاوز التجميع لتحسين الأداء واستخدام الذاكرة بشكل كبير.
تنفذ PHP هذا RFC كجزء شبه مستقل من Opcache. مع تمكين JIT ، يمكن للمطورين تشغيل الأكواد من خلال وحدة المعالجة المركزية بدلاً من برامج الجهات الخارجية مثل Zend VM ، مما يزيد من سرعة الحساب.
بصرف النظر عن حلول الترميز الرقمي الأفضل ، تقدم JIT أيضًا أداءً أفضل محتملًا لأكواد تطبيقات الويب PHP "النموذجية". بالإضافة إلى ذلك ، فإن إمكانية نقل المزيد من الأكواد من C إلى PHP لأن PHP ستصبح الآن أسرع عبر JIT.
بالإضافة إلى ذلك ، يقدم PHP 8.0 مترجمين JIT: التتبع و 1.5. من بين الاثنين ، تقدم JIT التعقب الواعد من خلال إظهار الأداء ثلاث مرات تقريبًا على المعايير الاصطناعية. وفي الوقت نفسه ، يحتوي 1.5 على ضعف التحسن في التطبيقات ذات التشغيل الطويل.
الحجج المسماة
يوفر أحدث إصدار من PHP وسيطات مسماة لتوسيع المعلمات الموضعية الحالية. الآن ، يمكن للمطورين تمرير بيانات الإدخال إلى وظيفة بناءً على اسم المعلمة بدلاً من الموضع. لهذا السبب ، تقدم الحجج المسماة مزايا متنوعة للمطورين.
أولاً ، تمكنهم من إنشاء أكواد أكثر قابلية للفهم لأن معنى الحجة هو التوثيق الذاتي. إنها أيضًا مستقلة عن الطلب ، مما يعني أن المطورين لن يضطروا إلى تمرير الوسائط إلى وظيفة بنفس طريقة توقيع الوظيفة.
علاوة على ذلك ، من الممكن أيضًا للمطورين دمج الحجج مع الحجج الموضعية. بالإضافة إلى ذلك ، يسمح لهم بتحديد الحجج التي يريدون تغييرها. بهذه الطريقة ، لن يضطروا إلى تعديل الوسيطات إذا لم يرغبوا في الكتابة فوق القيم الافتراضية.
الوسائط المسماة مفيدة أيضًا مع تعريفات الفئة أو النوع.
أنواع الاتحاد 2.0
في إصدارات PHP السابقة ، كان بإمكان المطورين تحديد أنواع الاتحاد فقط في التعليقات التوضيحية للمستندات. لم تقدم PHP دعمًا باستثناء "بناء نوع النوع" والفئة "القابلة للتكرار".
يهدف PHP 8.0 إلى دعم أنواع الاتحاد في تواقيع الوظائف من خلال أنواع الاتحاد 2.0 RFC. من خلال هذا التحديث ، لن يعتمد المطورون على الوثائق المضمنة بعد الآن.
بالإضافة إلى ذلك ، فإن دعم أنواع الاتحاد في PHP يسمح للمطورين بنقل فئات مختلفة من المعلومات من phpdoc إلى توقيعات الوظائف. لهذا السبب ، يمكنهم تحقيق فوائد مختلفة ، بما في ذلك اكتشاف الأخطاء مبكرًا ، ومنع معلومات النوع من أن تكون قديمة ، والتحقق من الأنواع أثناء الوراثة.
مشغل Nullsafe
قبل ذلك ، لم يتمكن المطورون من استخدام عامل الاندماج الصفري في استدعاءات الطريقة. سيحتاجون إلى فحوصات وسيطة أو مساعدين اختياريين من أطر خارجية. ومع ذلك ، مع عامل التشغيل nullsafe الجديد ، يمكن للمطورين الحصول على مثل هذه الوظائف في الأساليب. وهذا يعني أنه يمكن للمطورين الآن استخدام سلسلة من الاستدعاءات بدلاً من شروط الاختيار الفارغة. إذا فشل تقييم عنصر واحد في السلسلة ، تتوقف سلسلة التنفيذ بأكملها ويتم تقييم السلسلة بأكملها إلى "لاغية".
السمات V2
تُعرف السمات عمومًا باسم التعليقات التوضيحية في اللغات الأخرى ، وهي بيانات وصفية منظمة يمكن للمطورين استخدامها لتحديد خصائص الكائنات أو العناصر أو الملفات. يمكن للمطورين أيضًا استخدام هذه الميزة لإضافة البيانات الوصفية إلى جميع أسماء الفئات دون تحليل doblocks.
حتى PHP 7.4 ، كانت الطريقة الوحيدة لإضافة البيانات الوصفية إلى إعلانات الفئات هي من خلال تعليقات doc. باستخدام Attributes V2 RFC الجديدة ، تُعرّف PHP السمات على أنها منظمة ، ويمكن لمطوري البيانات الوصفية النحوية استخدامها للإضافة إلى إعلانات الأنواع والوظائف والخصائص والطرق والمعلمات والثوابت.
الآن ، يمكن للمطورين إضافة سمات قبل أو بعد تعليق docblock والحصول على واحدة أو أكثر منها مع واحدة أو أكثر من القيم المرتبطة.
مطابقة التعبير V2
أولئك الذين يعرفون "تعبيرات التبديل" يعرفون بالفعل ما هي تعبيرات المطابقة. تعد التعبيرات المطابقة فقط نسخة أفضل من "التبديل".
على سبيل المثال ، يوفر دلالات أكثر أمانًا ، مما يسمح للمطورين بإرجاع القيم مرة واحدة فقط. يمكنه أيضًا دمج الشروط دون "كسر" القيم. بالإضافة إلى ذلك ، لا يقوم بأي نوع من أنواع الإكراه ويستخدم مقارنات صارمة بين النوعين.
ترويج ممتلكات المنشئ
يقدم RFC هذا بناء جملة أكثر إيجازًا للمساعدة في تبسيط إعلان الخاصية ، والذي يهدف إلى دمج المُنشئ وتعريف المعلمة. الآن ، يمتلك المطورون طريقة أفضل للإعلان عن الخصائص أو المعلمات من خلال جعلها أقل تكرارًا وأقصر. يتيح RFC أيضًا للمطورين تقليل التعليمات البرمجية المعيارية التي يكتبونها لكائنات القيمة.
سلسلة Saner إلى مقارنات رقمية
يوفر PHP 8.0 هذا RFC لجعل مقارنات السلسلة الرقمية أكثر منطقية. للقيام بهذه المهمة من قبل ، تقوم PHP بنقل السلسلة إلى رقم أولاً ، ثم إجراء المقارنة بين الأعداد الصحيحة أو العائمة. على الرغم من أن هذه الممارسة كانت مفيدة بطرق مختلفة ، إلا أنها قد تخلق أخطاء فادحة مع وظيفة الموقع والآثار الأمنية.
كما ذكرنا ، يهدف RFC هذا إلى تقديم مقارنات سلسلة إلى رقم سلوكًا أكثر منطقية. سيستخدم مقارنة الأرقام عند المقارنة بسلسلة رقمية أو تحويل الرقم إلى سلسلة واستخدام مقارنة سلسلة.
أخطاء نوع ثابت للوظائف الداخلية
عند تمرير معلمة نوع غير قانونية ، تتصرف الوظائف الداخلية والمعرفة من قبل المستخدم بشكل مختلف. لا تطرح الوظائف الداخلية "TypeError" مثل الوظائف المعرفة من قبل المستخدم. بدلاً من ذلك ، يرسلون تحذيرات ويعيدونها على أنها "لاغية".
يعالج PHP 8.0 هذه التناقضات من خلال اقتراح RFC الذي يجعل تحليل المعلمات الداخلية APIs تولد "ThrowError" في حالة عدم تطابق نوع المعلمة. لهذا السبب ، تكون جميع سلوكيات الوظائف الداخلية أكثر اتساقًا.
فئات وواجهات ووظائف جديدة
من بين التغييرات الجديدة الملحوظة في PHP 8.0 فئة WeakMap. بشكل عام ، الخريطة الضعيفة هي مجموعة من البيانات أو الكائنات ذات مفاتيح ضعيفة الإشارة. تشير البيانات المرجعية الضعيفة إلى عدم وجود ما يمنع تدميرها ، مما يؤدي إلى ضعف الأداء وتسرب الذاكرة.
يدعم PHP 7.4 المراجع الضعيفة للاحتفاظ بمرجع إلى البيانات التي لا تمنع تدميرها. ومع ذلك ، فإن المراجع الخام والضعيفة تقتصر على نفسها.
من ناحية أخرى ، تعد الخرائط الضعيفة أكثر شيوعًا في الممارسة العملية. لكن من المستحيل تنفيذ خريطة ضعيفة فعالة فوق مراجع PHP الضعيفة. مع فئة WeakMap في PHP 8.0 ، يمكن للمطورين فعل ذلك. يمكنهم إنشاء كائنات كمفاتيح خرائط ضعيفة يمكن للمطورين أو البرنامج تدميرها. هذا يعني أن PHP ستعتبر هذه الكائنات وتجمعها كقمامة إذا لم يكن هناك ما يشير إليها لفترة ممتدة.
إضافة أخرى إلى العديد من ميزات PHP 8.0 الجديدة المفيدة هي الواجهة Stringable. يضيف RFC هذه الوظيفة تلقائيًا إلى جميع الفئات التي تطبق طريقة “__toString ()”. هذا يعني أن المطورين لن يضطروا إلى تشفير الواجهة يدويًا في كل مرة يقوم فيها الفصل بتنفيذ الكود.
في الإصدارات السابقة من PHP ، كانت "strstr" و "strpos" خيارات قياسية للمطورين للبحث عن إبرة داخل سلسلة. لسوء الحظ ، اعتبر الكثيرون كلتا الوظيفتين غير بديهية بما يكفي ويمكن أن تكون مربكة لمطوري PHP الجدد. الآن ، يمكنهم البحث داخل سلسلة بسهولة أكبر باستخدام وظيفة "str_contains" الجديدة.
بالإضافة إلى str_contains ، يقدم PHP 8.0 "str_starts_with ()" و "str_ends_with ()" للمساعدة في البحث عن إبرة أفضل داخل سلسلة.
تتضمن الوظائف الجديدة الأخرى "fdiv ()" و "get_debug_type ()" و "get Resource_id ()" و "token_get_all ()" تنفيذ الكائن و DOM Traversal and Manipulation APIs.
اكتب النظام ومعالجة الأخطاء
يوفر PHP 8.0 أيضًا تحسينات متنوعة على النظام ومعالجة الأخطاء. واحد منهم هو نوع مختلط. يساعد "النوع المختلط" في منع الأنواع المفقودة في الكود. في PHP ، قد تعني الأنواع المفقودة أن الدالة ترجع قيمة خالية ، أو نوعًا من عدة أنواع ، أو نوع لا يمكن تلميحه.
بشكل عام ، يمكن أن تعني كلمة "مختلطة" مصفوفة ، منطقية ، قابلة للاستدعاء ، int ، عائمة ، خالية ، كائن ، مورد ، وسلسلة. من خلال النوع المختلط الجديد ، يمكن للمطورين إضافة أنواع إلى المعلمات وخصائص الفئة وإرجاع الوظائف. سيساعد القيام بذلك في الإشارة إلى أن معلومات النوع لم يتم نسيانها بل تم تحديدها بدقة أكبر.
هناك تحسن ملحوظ آخر يجلبه PHP 8.0 وهو نوع الإرجاع الثابت. قبل إصدار الإصدار 8.0 من PHP ، كان من الممكن أن تعود "self" ، لكن "static" لا يمكن أن تعود. الآن ، مع طبيعة PHP الديناميكية المكتوبة ، سيجد المطورون هذه الميزة مفيدة للغاية.
تتضمن التحسينات الأخرى لنظام النوع ومعالجة الأخطاء التي توفرها PHP التحقق من صحة طريقة السمات المجردة ، والتوقيعات الصحيحة للطرق السحرية ، والوراثة بالطرق الخاصة ، وتحذيرات المحرك المعاد تصنيفها. يحتوي أيضًا على أخطاء فادحة لتوقيعات الطريقة غير المتوافقة والكائنات غير الشفافة بدلاً من الموارد لـ Curl و Gd و Sockets و OpenSSL و XMLWriter و XML.
تحديثات بناء الجملة الأخرى
يوفر PHP 8.0 أيضًا العديد من التحسينات في بناء الجملة. على سبيل المثال ، يمكن للمطورين الآن استخدام "رمي" كتعبير بدلاً من بيان ، مما يجعل من الممكن طرح الاستثناءات في أماكن مختلفة.
علاوة على ذلك ، يحتوي PHP 8.0 أيضًا على البنية المتغيرة RFC ، والتي تساعد في حل التناقضات المتعددة في بناء الجملة المتغير للبرنامج. من خلال RFC هذا ، يمكن للمطورين الآن التعامل مع الحالات الصغيرة التي تم التغاضي عنها.
علاوة على ذلك ، يوفر PHP 8.0 أيضًا عمليات صيد غير ملتقطة. قبل التحديث ، كان المطورون يخزنون استثناءً في متغير إذا أرادوا اللحاق به. مع عدم الالتقاط ، يمكنهم حذف المتغير.
بالإضافة إلى ذلك ، يمكن للمطورين الآن التعامل مع الأسماء ذات مساحات الأسماء كرمز مميز واحد والسماح بـ ":: class" على الكائنات. بالإضافة إلى ذلك ، فإنه يتيح تتبع الفواصل في قوائم المعلمات ، وإغلاق استخدام قوائم RFC.
كيف تؤثر PHP الجديدة على موقع WordPress الخاص بك
حاليًا ، يدعم WordPress إصدارات PHP 7.4 و 8.0 و 8.1. لسوء الحظ ، يتردد بعض المستخدمين في الترقية لأن الإصدارات الجديدة غير متوافقة مع السمات والمكونات الإضافية المفضلة لديهم.
وفي الوقت نفسه ، لن تظهر مشكلات التوافق إلا إذا لم يستخدموا أحدث إصدارات WordPress ، مثل 5.9 و 6.0. يفضل البعض عدم القيام بذلك لأنهم يفضلون العمل باستخدام برامج قديمة أو قديمة ، مما يمنعهم من الترقية إلى أحدث إصدار من PHP. وبسبب هذا ، فإنهم يميلون إلى مواجهة المزيد من المشكلات في عملية التطوير.
من ناحية أخرى ، فإن المطورين الذين جربوا أحدث إصدار من PHP على مواقع WordPress الخاصة بهم يختبرون تطويرًا أفضل وأسهل بفضل الميزات والتحسينات الجديدة. يوفر PHP 8.0 و 8.1 معالجة ممتازة للأخطاء وتحسينات. بالإضافة إلى ذلك ، تخطط 8.1 للحصول على دعم نشط وتحديثات أمنية في السنوات التالية.
تحضير موقع WordPress الخاص بك لتحديث PHP
كما ذكرنا سابقًا ، فإن PHP 8.0 بها مشكلات توافق محددة مع إصدارات WordPress الأقدم. للحصول على تجربة تطوير سلسة ، من الأفضل تحديث موقعك إلى الإصدار 5.9 أو 6.0 لدعم وظائف PHP الجديدة.
إذا كنت مترددًا في ترقية موقع WordPress الخاص بك إلى أحدث إصدار ، فيمكنك اختباره أولاً باستخدام أدوات متنوعة عبر الإنترنت لمعرفة ما إذا كان بإمكانك المتابعة بدون أخطاء. علاوة على ذلك ، قبل تكوين موقعك لـ PHP 8.0 الجديد ، من الأفضل استنساخه أولاً لتجنب فقدان البيانات بسبب الأخطاء. بمجرد القيام بذلك ، اختبره على أحدث إصدار من PHP لمعرفة ما إذا كانت متوافقة.
إذا كانت السمات والإضافات المحددة لا تعمل مع PHP 8.0 ، فيجب عليك تحديثها إلى أحدث إصداراتها. بدلاً من العودة إلى PHP القديم ، اتصل بفريق دعم القالب أو المكون الإضافي وأبلغهم بمشكلة التوافق. يجب عليهم تحديث ميزات موقعك حتى يتمكنوا من العمل بسلاسة مع PHP 8.0 و PHP 8.1.
قم بتمكين موقع WordPress الخاص بك
مع تقدم التكنولوجيا الحديثة بسرعة ، يستمر الطلب على مواقع أكثر تنافسية وعالية الأداء في النمو. هذا يعني أن التردد في التكيف مع الاتجاهات الجديدة قد يؤدي إلى تأخر مواقعك.
تقدم لغة البرمجة PHP اليوم ميزات جديدة تساعد المطورين على البرمجة بشكل أفضل من ذي قبل ، وذلك بفضل إصداريهم 8.0 و 8.1. بينما تجلب الميزات الجديدة اليوم الكثير بالفعل للمطورين ، تعد PHP بالمزيد لمواقع الغد.