
عندما يناقش الأشخاص التغييرات في PHP7 ، فإن الشيء الأكثر شيوعًا الذي تسمعه هو محرك محسّن بشكل كبير ، والذي يتميز بسرعة تنفيذ أسرع وذاكرة أقل بكثير عند مقارنة تطبيقات PHP الشائعة مثل Drupal و WordPress و MediaWiki.
لا تفهموني خطأ ، هذا بالطبع رائع! تمكنت من نقل العديد من تطبيقات CodeIgniter القديمة إلى PHP7 وتحقيق أداء أفضل بكثير مع بعض التغييرات في قاعدة التعليمات البرمجية. ومع ذلك ، يضيف PHP7 أيضًا العديد من الميزات الجديدة التي يمكن أن تساعد في تحسين التعليمات البرمجية الموجودة أو تحسين جودة كتابة التعليمات البرمجية الجديدة. لقد أوجزت هنا العديد من الميزات التي اخترتها.
المعلمة العددية والعودة من النوع المعلن
كان لدى PHP إعلانات النوع حتى الإصدار 7 ، ولكنها اقتصرت فقط على الكائنات والمصفوفات. يوفر PHP7 الآن الدعم لجميع الأنواع العددية ويقدم إعلانين مختلفين للنوع.
القسري:
إنه النوع الافتراضي للإعلان ويعني ببساطة أن وقت تشغيل PHP سيحاول إلقاء القيم عند الضرورة. خذ ، على سبيل المثال ، الكود التالي.
<?php function reverseString(String $str) : String { return strrev($str); } print(reverseString(1234));
نشير إلى أن المعلمة $str
يجب أن تكون من نوع String
وأن قيمة الإرجاع يجب أن تكون أيضًا من نوع String
. لذلك ، عندما نمرر الرقم 1234 ، فإنه يُترجم بالقوة إلى السلسلة "1234" ويُترجم بدون أخطاء.
صارم:
يتم تمكين النوع الثاني الصارم باستخدام العلامة المضافة في بداية كل ملف. عند تشغيله ، لا يقوم المترجم بإلقاء النوع ، كما في المثال أعلاه ، فإنه يستجيب بخطأ ويوقف البرنامج النصي.
<?PHP declare(strict_types = 1); function reverseString(String $str): String { return strrev($str); } print (reverseString(1234));
إضافة عبارة تعريف واحدة في بداية الملف ، في نفس الرمز السابق ، نتلقى الآن رسالة الخطأ التالية:
خطأ فادح: خطأ غير معروف: يجب أن تكون الوسيطة 1 التي تم تمريرها إلى reverseString () من سلسلة النوع ، العدد الصحيح المعطى
إضافة صغيرة: عند تمكين الوضع الصارم ، ينطبق هذا أيضًا على الوظائف المضمنة ووظائف PHP التي يتم تحميلها من الامتدادات.
عامل فارغ ??
على عكس بعض اللغات ، حيث يمكنك استخدام اسم المتغير كتعبير في تعبير if
والافتراض بأمان أنه إذا لم يتم تحديد القيمة أو فارغة ، فستكون القيمة false
، فسوف يلقي PHP خطأ حول متغير ، فهرس غير محدد ، إلخ. وهذا يجعلها تعليمات برمجية مطولة للغاية ، if
تستخدم لغات أخرى ، كما هو الحال في المثال التالي.
<?php if(!isset($_GET['key'])) { $key = 'default-value'; } else { $key = $_GET['key']; }
حتى عند استخدام عامل التشغيل الثلاثي ، تكون وظيفة الإصدار مطلوبة. مع عامل null الجديد ??
يمكنك تسهيل التعليمات البرمجية بشكل كبير:
<?PHP $key = $_GET['key'] ?? 'default_value';
هذا الاستخدام أكثر كفاءة في تسلسل الحالات التي تتطلب واحدة أو أكثر if
.
<?php if (isset($_GET['key']) { $key = $_GET['key']; } else if(isset($_POST['key'])) { $key = $_POST['key']; } else { $key = 'default value'; }
إضافة صغيرة: إذا كنت تعمل مع JavaScript ، يمكنك القيام بأشياء مثل هذا:
const value = 0 || false || 'hello'; console.log(value);
لن يعمل هذا في PHP ، وسيقوم كود PHP المكافئ بتعيين القيمة إلى 0 ، لأن العامل الجديد يعمل فقط مع القيم null
.
إعلانات استخدام المجموعة
في الإصدارات السابقة من PHP ، كان بإمكانك استيراد عنصر واحد فقط (فئة ، وظيفة ، ثابت) من مساحة اسم محددة في تعبير واحد باستخدام تصريح الاستخدام. غالبًا ما أدى هذا إلى كود متكرر للغاية ، كما هو الحال في المثال أدناه.
<?php use VendorName/LibraryName/ClasName1; use VendorName/LibraryName/ClasName2; use VendorName/LibraryName/ClasName3;
عند التجميع ، يمكن اختصار ما ورد أعلاه ، كما هو موضح في المثال أدناه ، والذي يسمح لك بالحصول على رمز أكثر نظافة وبديهية لما يتم استيراده ومن أين.
<?php use VendorName/LibraryName/{ClasName1, ClassName2. ClassName3};
صفائف ثابتة
الثوابت المسماة هي أداة قيمة للغاية في PHP. إحدى حالات الاستخدام الشائعة هي تحسين إمكانية قراءة التعليمات البرمجية عن طريق توفير أسماء دلالية للبيانات العشوائية ، مثل الألوان أو قيم RGB أو الأرقام السحرية في التعليمات البرمجية التي تكون غامضة ويمكن أن تكون مربكة في حالات أخرى.
من المرجح أن أي شخص يعمل مع PHP لفترة طويلة قد شاهد تطبيقًا يحتوي على ملف ثابت (أو حتى عدة ملفات) يحتوي على عشرات ، إن لم يكن المئات من الثوابت المسماة ، تتطلب أسماء طويلة وصفية لتجنب تعارض الأسماء.
<?php define('COLOR_RED', '#f44141'); define('COLOR_BLUE', '#4286f4'); define('COLOR_GREEN', '#1ae01e'); define('COLOR_PURPLE', '#f309f7'); define('COLOR_ORANGE', '#ef7700');
يمكن أن تكون الثوابت المسماة ، بالإضافة إلى أنواع البيانات المدعومة سابقًا ، إما صفائف مفهرسة أو ارتباطية. سيساعد ذلك على تجميع العديد من الثوابت المسماة التي قد تكون لديك في التطبيق بشكل أكثر دقة.
<?php
الخلاصة
هناك المزيد من الميزات الجديدة الرائعة التي لم أذكرها ، مثل الفئات المجهولة ومشغل سفينة الفضاء. لذلك بالتأكيد تحقق من وثائق PHP.net لمزيد من المعلومات. نشكرك على تخصيص بعض الوقت لقراءة كل هذا ، ويُرجى ترك أي أسئلة أو تعليقات أدناه.
شكرا بيريز على التعليقات.