عوامل المقارنة هي جانب متغاضى عنه في PHP، قد يؤدي إلى نتائج غير متوقعة. واحدة من هذه المشاكل تقع من المقارنات
المحكمة (كالمقارنة ما بين بيانات من النوع رقمي ببيانات من النوع منطقي).
عند استخدام العبارة ‘if/else’ مع دالة أو عملية، هنالك العديد من المفاهيم المغلوطة كأنه يجب استخدام العبارة ‘else’ للتعبير
عن الحالات المحتمل حدوثها. ولكن هذه الحالات قد تقوم بإرجاع قيمة، عندها ‘else’ ليست ضرورية كإرجاع القيمة ‘return’ يقوم بإنهاء
تنفيذ الدالة مما يجعل العبارة ‘else’ عديمة الفائدة.
عند استخدام فضاءات الأسماء، قد تجد أن الدوال المدمجة تختفي بالدوال التي تقوم بكتابتها. لمعالجة هذه المشكلة قم بالإشارة
إلى النطاق العامل للدالة باستخدام الرمز \ قبل اسم الدالة.
النصوص هي عبارة عن سلسلة من الحروف. ولكن هنالك أنوع مختلفة من النصوص وتتيح هذه الأنواع اختلاف بسيطاً في الصيغة مع اختلاف طفيف في التصرف
علامة التنصيص الوحيدة
وتستخدم للتعريف بالنص “الصريح”. ويعني أنه لا يتم المحاولة لعرض نصوص أو رموز خاصة أو حتى متغيرات.
إذا كنت تستخدم علامة التنصيص الوحيدة وتريد استخدام متغير داخل النص مثل: 'Hello $name' عندها سترى أنه قد تم طباعة
Hello $name كما هي. إما إذا كنت تستخدم علامة التنصيص المزدوجة عندها سيحاول عرض قيمة المتغير $name ثم إظهار خطأ إذا
لم يجد هذا المتغير.
علامة التنصيص المزدوجة لن تقوم فقط بمعالجة قيمة المتغير كما ذكر في المثال أعلاه، ولكن تقوم بمعالجة وعرض الرموز الخاصة مثل
\n للسطر الجديد. و \t للمسافة. وغيرها..
يمكن لعلامة التنصيص المزدوجة أن تحتوي على متغيرات وهو ما يعرف بالإستيفاء “interpolation”.
عند استخدام الإستيفاء عادة ما يقوم المتغير بالإلتصاق مع حروف اخرى. مما يتج عن ذلك تضارب في ايهم اسم المتغير وايهم الحرف.
لحل هذه المشكلة قم بإحاطة المتغير بأقواس المجموعة.
هنالك العديد من الخرافات تدور حول أن التنصيص الوحيد هو أسرع من التنصيص المزدوج. وهو شيء غير صحيح.
إذا كنت تقوم بتعريف نص وحيد ولا تنوي القيام بوصل القيم أو أي شيء معقد عندها كلا العلامتين متساويتين في الأداء والسرعة.
إذا كنت تقوم بوصل عدد من النصوص أو أي نوع، أو استيفاء القيم بداخل تنصيص مزدوج عندها ستكون النتائج غير ثابتة.
إذا كنت تعمل باستخدام قيم بأرقام صغيرة عندها الوصل يتم بسرعة.
بغض النظر عن ما تقوم بعمله باستخدام النصوص، لا يوجد نوع معين من التنصيص يجب أن تقوم بالتركيز عليه، ولا تأثير على كفاءة
التطبيق. إن قيامك بإعادة صياغة باستخدام أنواع اخرى ظناً بأنه جيد للسرعة أو الكفاءة هو عملية مضيعة للوقت، فلا تقم بهذه
العملية وإضاعة زمنك إلا إذا كنت تتفهم تماماً ماهية التأثير الناتج من الإختلاف.
أو ما تسمى “Ternary Operators”، وهي طريقة ممتازة لضغط الكود البرمجي ولكن عادة ما يكثر من استخدامها. بما أنها تكون
مكدسة ومتداخلة، فينصح عادة استخدام واحدة لكل سطر لتسهيل عملية القراءة.
بالمقارنة هذا مثال يقوم بالتضحية بتسهيل القراءة من أجل التقليل من عدد السطور:
لإرجاع قيمة باستخدام العامل الثلاثي قم باستخدام الصيغة الصحيحة.
جدير بالذكر أنه لا يتوجب عليك استخدام العامل الثلاثي لتقوم بإرجاع قيم من النوع المنطقي. كمثال:
ويمكن قول هذا لكل عوامل المقارنة الأخرى (===, !==, !=, == الخ).
استخدام الأقواس مع العوامل الثلاثية للصياغة والعملية
عند استخدام العوامل الثلاثية فأن الأقواس تقوم بلعب دور في تحسين قراءة الكود وإضافة وصلات منطقية ما بين الأوامر.
مثال يوضح متى لا تحتاج استخدام الأقواس:
الأقواس تساهم في عمل وصلات ما بين جمل الأوامر حين يتم فحصها بأكملها. مثلا في المثال ستقوم بإرجاع القيمة “true” إذا كان
كل من ($a == 3 و $b == 4) صائبين و $c == 5 صائبة أيضاً.
مثال آخر في المثال ادناه يقوم بارجاع قيمة صائبة “true” إذا كان نات المنطق:
($a != 3 AND $b != 4) OR $c == 5
منذ الإصدارة PHP 5.3 يمكن ترك الجزء الأوسط من العامل.
مثلا: “expr1 ?: expr3” تقوم بإرجاع القيمة expr1 عندما تكون صائبة أو expr3 عدا ذلك.
مع مرور الزمن يقوم المبرمجون بجعل برمجياتهم أنظف بالقيام بتعريف المتغيرات مسبقاً باستخدام أسماء مختلفة. ما يقوم به
هذا الأسلوم هو مضاعفة المساحة المستهلكة من الذاكرة لمتغيرات سبق ذكرها وتعريفها. في المثال أدناه لنفترض أن المتغير يحتوي
على نص بحجم 1MB من البيانات عند نسخه في متغير فأنت تقوم بمضاعفة الحجم إلى 2MB.