١- فعّل الإعلام بالأخطاء بأعلى مستوياته
تعتبر هذه من أهم النقاط التي يجب اتباعها أثناء التطوير، فقد تجنبك ساعات وساعات من البحث في نصك البرمجي عن خطأ قد لا يكون ظاهراً. إن تحديد مستوى منخفض للإعلام بالأخطاء يخفي عدة مشاكل قد لا تكون مهمة مثل استخدام قيمة متحول غير معرف مسبقاً، ويعتبر هذا الخطأ صغيراً لأن محرك اللغة يقوم بتعريفه عند استخدامه ببساطة ويعطيه قيمة صفرية، لكن المشكلة قد تكون كبيرة بالنسبة لك بالنظر إلى منطق التطبيق الذي تقوم بتطويره، فلا تكون القيمة الافتراضية مناسبة أو تكون من نوع غير مناسب لم تقم بمعالجته.
لتفعيل الإعلام بالأخطاء بأعلى مستوى يمكنك ببساطة استخدام السطر التالي في بداية البرنامج:
error_reporting(E_ALL);
وبالطبع يمكنك حذف السطر أو تعليقه عند نقل التطبيق من التطوير إلى الإنتاج الفعلي لمنع ظهور الأخطاء للمستخدمين.
٢- تعلم الفرق بين علامات التنصيص المفردة والمزدوجة (Single vs. Double Quotes)
موضوع استخدام علامات التنصيص المفردة أو المزدوجة يحمل سجالاً طويلاً بين المطورين، لكل فريق مبرراته طبعاً، لكننا لن نرشح أحد الطرفين على الآخر في هذا المقال، إنما الهدف هنا إيضاح الفرق، ولك الخيار في استخدام ما تفضل.
(((==علامات التنصيص المفردة (Single Quotes)===))
الطريقة الأبسط للتعامل مع السلاسل المحرفية (Strings) هي إدراجها بين علامتي تنصيص مفردتين ( المحرف ‘ ).
يمكن استخدام محرف Backslash (\) لتهريب علامة تنصيص مفردة ضمن النص، ولتهريب محرف Backslash تتم مضاعفته.
(((==علامات التنصيص المزدوجة (Double Quotes) ==))
تستخدم بنفس الطريقة مع بعض الفروق. حيث تسمح بتمرير مجال أكبر من السلاسل محرفية، مثل السطر الجديد (n\) أو علامة الجدولة (t\)
يضاف لذلك كونها تقوم بتحويل أسماء المتغيرات إلى قيمها دون الحاجة لإغلاق السلسلة المحرفية لتمرير المتحول وإعادة فتحها بعده. علماً أن هذه الميزة، بالرغم من كونها تسهل كتابة النص البرمجي، إلا أنها تصعّب قراءته وفهمه واكتشاف الأخطاء فيه.
كما يجدر بالذكر أن الميزات الإضافية الناتجة عن استخدام علامات التنصيص المزدوجة تؤثر على الأداء لكونها تأخذ زمناً أطول للمعالجة.
٣- استعمل علامات تنصيص لتحديد عناصر مصفوفة
عند التعامل مع المصفوفات في PHP، قد تمر بحالة مشابهة لما يلي:
echo $user[name];
ومع ان هذا السطر قد ينفذ بشكل صحيح، إلا أنه تقنياً خاطئ، والسبب في ذلك أنه عند تمرير دليل المصفوفة دون علامات تنصيص فإن محرك اللغة يعتبره ثابتاً (Constant) في البداية ويحاول البحث عن القيمة المعرفة له، وعند عدم إيجاده يقوم برده بشكله النصي مما قد يوهمك بأنه يعمل بشكل صحيح، لكن المشاكل تبدأ في حال قمت، أو قام أحد زملائك، بتعريف ثابت بهذا الاسم. تخيل ما قد يحدث.
كما أن هذه الطريقة تؤثر على الأداء بشكل ملحوظ نتيجة الحاجة للبحث عن قيمة ثابت ثم الاستعاضة عنها بالقيمة النصية، في حين أن محرك اللغة يستعمل القيمة النصية مباشرة عند وجود علامات التنصيص (يفضل أن تكون مفردة استناداً للنقطة السابقة) كما في في المثال التالي:
echo $user['name'];
٤-لا تستعمل وسم البداية المختصر
في حال علمك أحد ما أن استعمال وسم البداية المختصر (?>) قد يسهل حياتك فتجاهل ذلك تماماً، إنها من الميزات القديمة التي أصبحت تولد مشاكل أكثر من حلول، حيث أنها تسبب تضارباً مع XML. وقد أدى ذلك لإلغاء هذه الميزة بشكل افتراضي، واستعمالك لها قد يزعج الكثيرين عند محاولتهم تشغيل نصك البرمجي على مخدماتهم.
كل ما عليك فعله هو استعمال وسم البداية الكامل (php?>).
٥- لا تستعمل التوابع ضمن الحلقات
هذه القاعدة تطبق على لغات البرمجة بشكل عام، حيث أن استخدام تابع ضمن الحلقة يسبب تنفيذه عند كل دورة بشكل غير مبرر مما يعيق الأداء، لذا من الأفضل تخزين قيمة التابع في متحول واستخدام المتحول ضمن الحلقة. قارن بين المثالين أدناه:
// BAD
for ($i = 0; $i < count($array); $i++) {
//stuff
}
// GOOD
$count = count($array);
for($i = 0; $i < $count; $i++) {
//stuff
}