كود PHP الجيد يجب أن يكون منظمًا، كود PHP الجيد يجب أن يكون موحدًا، كود PHP الجيد يجب أن يكون قابلاً للتكيف، كود PHP الجيد يجب أن يكون آمنًا...
سأطرح هذا السؤال بالتأكيد عندما أقوم بإجراء مقابلة في SitePoint. ما هي مزايا وعيوب كود PHP؟ لأن هذا السؤال يمكن أن يعطيني فكرة عامة عن نوع المبرمج الذي هو المرشح، بدلاً من مجرد اختبار إتقانه لوظائف PHP (شهادة Zend PHP جيدة في هذا، وأسئلة مقابلة مبرمج PHP من Yahoo هي أيضًا كذلك).
الأهم من ذلك، أن هذا السؤال يتيح لي معرفة ما إذا كان المرشح قد اختبر الاستيلاء على جزء من التعليمات البرمجية الفوضوية من مبرمج كسول لإعادة استخدامه، أو مساعدة أعضاء آخرين في الفريق في هذا النوع من الأشياء.
من المسلم به أنني لا أملك إجابة مرضية على هذا السؤال بنفسي، لكني أعرف الإجابات التي أريد سماعها:
يجب أن تكون كود PHP جيدًا منظمًا. يجب تقسيم الأقسام الكبيرة من التعليمات البرمجية إلى وظائف أو أساليب، بينما يجب التعليق على الأقسام الصغيرة من التعليمات البرمجية التي لا تلفت الانتباه حتى يتضح الغرض منها لاحقًا. ويجب فصل أكواد الواجهة الأمامية مثل HTML وCSS وJavascript وما إلى ذلك عن البرنامج قدر الإمكان. يمكن أن تساعد ميزات البرمجة الموجهة للكائنات في PHP المبرمجين على تنظيم أكوادهم بطريقة منظمة.
يجب توحيد كود PHP الجيد. سواء أكان الأمر يتعلق بتعيين قواعد تسمية لأسماء المتغيرات والوظائف، أو توحيد العمليات القابلة لإعادة الاستخدام مثل عمليات قاعدة البيانات ومعالجة الأخطاء، أو ببساطة تحديد كيفية وضع مسافة بادئة للتعليمات البرمجية، فإن هذه التوحيدات يمكن أن تجعل التعليمات البرمجية أكثر قابلية للقراءة بشكل كبير.
يجب أن يكون كود PHP الجيد قابلاً للتكيف. تحتوي PHP على العديد من الميزات مثل علامات الاقتباس السحرية والعلامات القصيرة، وسيؤثر تشغيل هذه الميزات وإيقاف تشغيلها على تشغيل البرنامج. لذلك، يجب على المبرمج الجيد أن يضيف العبارات المناسبة إلى الكود الخاص به حتى يتمكن البرنامج من التكيف وفقًا للبيئة.
يجب أن يكون رمز PHP الجيد آمنًا. على الرغم من أن لغة PHP هي لغة فعالة ومرنة بدون إطار عمل ثابت، إلا أنها تترك مشكلات الأمان للمبرمجين. يعد الفهم العميق للثغرات الأمنية المحتملة، مثل البرمجة النصية عبر المواقع (XSS)، وتزوير الطلبات عبر المواقع (CSRF)، وثغرات حقن التعليمات البرمجية، ونقاط الضعف في حلقة تشفير الأحرف، وما إلى ذلك، أمرًا بالغ الأهمية للمبرمجين المحترفين اليوم.
عندما يجيب أحد المرشحين على هذه الأسئلة، أعرف بوضوح ما إذا كان ينبغي لي تعيينه أم تعيينها. بالطبع، في بعض الأحيان لا يتمكن المبرمجون من توضيح المشكلة بشكل جيد، ونطلب منهم إجراء بعض اختبارات PHP. قد تبدو العديد من الأسئلة في الاختبار بسيطة جدًا في الظاهر، ولكنها أيضًا تمنح المرشحين فرصة للتعبير عن أنفسهم، لأنك إذا نظرت بعناية، يمكنك اكتشاف المشكلات.
الجزء الصغير التالي من كود PHP "الضعيف" هو سؤال اختبار مبسط. هذا السؤال يشبه السؤال: كيف يجب عليك تحسين هذا الكود؟
<؟
صدى ("<p> نتائج البحث عن الاستعلام: " .
$_GET['query'] ".</p>");
?>
المشكلة الرئيسية في هذا الرمز هو أنه يعرض البيانات المقدمة من قبل المستخدم مباشرة على صفحة الويب، وبالتالي إنشاء ثغرة XSS. هناك في الواقع العديد من الطرق لملء هذه الفجوة. إذن ما هو الكود الذي نريده؟
<؟
صدى ("<p> نتائج البحث عن الاستعلام: " .
htmlspecialchars($_GET['query']) ".</p>");
?>
هذا هو الحد الأدنى من المتطلبات. تم ملء ثغرة XSS بوظيفة htmlspecialchars، وبالتالي حظر الأحرف غير القانونية.
<?php
إذا (isset($_GET['استعلام']))
{
صدى '<p>نتائج البحث عن الاستعلام: '،
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
يجب أن يكون الأشخاص الذين يمكنهم كتابة مثل هذا الرمز هم الأشخاص الذين أرغب في توظيفهم.
تم استبدال <?p بـ <?php، وهو أكثر توافقًا مع مواصفات XML.
قبل إخراج قيمة $_GET['query']، حدد أولاً ما إذا كانت فارغة.
تمت إزالة الأقواس الإضافية في أمر الارتداد.
يتم تصنيف السلاسل النصية بعلامات اقتباس مفردة، مما يوفر وقت PHP في البحث عن متغيرات قابلة للاستبدال في السلسلة.
استخدم الفواصل بدلاً من النقاط لتوفير وقت الصدى.
قم بتمرير علامة ENT_QUOTES إلى وظيفة htmlspecialchars للتأكد من تخطي علامات الاقتباس المفردة أيضًا. على الرغم من أن هذا ليس هو الشيء الأكثر أهمية، إلا أنه عادة جيدة أيضًا.
لسوء الحظ، هناك عدد قليل جدًا من المبرمجين الذين يمكنهم تقديم مثل هذه الإجابة المرضية. لقد استغرق الأمر منا 3 أشهر لتوظيف المبرمجين الذين كنا راضين عنهم.
إذن كيف تجيب على السؤال المطروح في بداية هذا المقال؟ ما رأيك في مزايا وعيوب كود PHP؟ ما هي الصفات الأخرى التي تعتقد أنه يجب أن يتمتع بها مبرمج PHP؟
هذه المقالة مأخوذة من: http://www.yeeean.com/articles/view/38585/18736
الرابط الأصلي: http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/