سؤال

أقوم ببرمجة أول موقع ويب حقيقي لـ PHP وأتساءل عن كيفية جعل الكود الخاص بي أكثر قابلية للقراءة لنفسي. الكتاب المرجعي الذي أستخدمه هو PHP و MySQL Web Development 4th Ed.

يعطي الكتاب المذكور أعلاه ثلاث طرق لفصل المنطق والمحتوى:

  • تضمين الملفات
  • وظيفة أو فئة API
  • نظام القالب

لم أختر أيًا من هذه الأشياء حتى الآن ، حيث أن لف عقلي حول هذه المفاهيم يستغرق بعض الوقت. ومع ذلك ، أصبح الكود الخاص بي بعض الهجين من الأولين حيث أنا فقط أسخّن هنا وأعدل أثناء ذهابي.

على جانب العرض التقديمي ، تحتوي جميع صفحاتي على هذه العناصر الشائعة: الرأس ، الملاحة العلوية ، التنقل في الشريط الجانبي ، المحتوى ، الشريط الجانبي الأيمن وتذييل.

تشير الأمثلة المستندة إلى الوظيفة في الكتاب إلى أنه يمكنني الحصول على وظائف العرض هذه التي تتعامل مع جميع مثال العرض التقديمي. لذلك ، سيكون رمز صفحتي هكذا:

display_header();
display_navigation();
display_content();
display_footer();

ومع ذلك ، لا أحب هذا لأن الأمثلة في الكتاب لديها هذه العبارات المطبوعة مع HTML و PHP مختلطة مثل هذا:

echo "<tr bgcolor=\"".$color."\"><td><a href=\"".$url."\">" ...

أود أن يكون لديك HTML مع بعض PHP في الوسط ، وليس العكس.

أفكر في صنع صفحاتي حتى في بداية صفحتي ، سأجلب جميع البيانات من قاعدة البيانات ووضعها في المصفوفات. سأحصل أيضًا على بيانات المتغيرات. إذا كان هناك أي أخطاء في أي من هذه العمليات ، فسوف أضعها في سلاسل خطأ.

بعد ذلك ، على رمز HTML ، سأقوم بتخطي هذه المصفوفات باستخدام Foreach وعرض المحتوى. في بعض الحالات ، سيكون هناك بعض المتغيرات التي سيتم عرضها. إذا كان هناك متغير خطأ يتم تعيينه ، فسوف أعرض ذلك في الموضع المناسب.

(كملاحظة جانبية: الشيء الذي لا أفهمه هو أنه في معظم رمز المثال ، إذا كان بعض استعلام قاعدة البيانات أو ما يعطي خطأ ، فهناك دائمًا:

else echo 'Error';

هذا يحيرني ، لأنه عندما يعطي رمز المثال خطأ ، يتم صدده في بعض الأحيان حتى قبل أن تبدأ HTML ...)

بالنسبة للأشخاص الذين استخدموا ASP.NET ، فقد اعتدت بعض الشيء على ملفات الكود-Behind و Lblerror وأنا أحاول القيام بشيء مماثل هنا.

الشيء الذي لم أحسبه هو كيف يمكنني القيام بهذا "المنطق أولاً ، ثم العرض التقديمي" حتى لا أضطر إلى التكرار على سبيل المثال عرض المنطق والتنقل في جميع الصفحات.

هل يجب أن أفعل بعضًا من الملفات أو هل يمكنني استخدام الوظائف هنا ولكن بشكل مختلف قليلاً؟ هل هناك أي مقالات جيدة حيث يتم شرح هذه "الأنماط" لفصل العرض التقديمي والمنطق بشكل أكثر شمولية. الكتاب لدي فقط فقرة واحدة عن هذه الأشياء.

ما أفكر فيه هو أنني أتحدث عن بعض المفاهيم أو طرق القيام برمجة PHP هنا ، لكنني لا أعرف المصطلحات الخاصة بهم بعد.

أعلم أن هذا ليس سؤالًا مباشرًا إلى الأمام ، فأنا بحاجة فقط إلى بعض المساعدة في تنظيم أفكاري.

هل كانت مفيدة؟

المحلول

أبداً صدى خارج HTML مع PHP. بدلاً من ذلك اكتبه مضمّنًا (بدون علامات قصيرة شريرة) كما

<tr class="<?php echo $myclass; ?>">

خيارات أخرى للمساعدة في فصل المنطق / العرض هي استخدام إطار عمل PHP مثل Codeigniter.

أود أن أتخلى عن الكتاب وأركز بدلاً من ذلك على تعلم مهارات PHP الأساسية مثل الوظائف والفصول الدراسية ، إلخ. ثم ابدأ في تشغيل العديد من الأطر الشعبية في الخارج.

كملاحظة جانبية: الشيء الذي لا أفهمه هو أنه في معظم رمز المثال ، إذا كان بعض استعلام قاعدة البيانات أو ما يعطي خطأ ، فهناك دائمًا:

ذلك لأنهم يعرضون الأخطاء بشكل غير صحيح. يجب عليك إما تخزين الأخطاء في sesssion ثم عرضها على الصفحة (مسحها أيضًا) أو رميها في سجل الخطأ مع error_log وظيفة. error_log("Something happened in MyClass");

الشيء الذي لم أحسبه هو كيف يمكنني القيام بهذا "المنطق أولاً ، ثم العرض التقديمي" حتى لا أضطر إلى التكرار على سبيل المثال عرض المنطق والتنقل في جميع الصفحات.

فكر في الأشياء في MVC يقترب. يمكنك استدعاء وحدة التحكم (المنطق) أولاً. إنه يكتشف ما هو مطلوب. إذا كان يحتاج إلى بيانات من قاعدة البيانات ، فإنه يستدعي نموذجًا ويطلب ذلك. ثم يقوم بتنسيقه ، ويضيف بيانات أخرى ، ويقوم بتشغيل استعلامات إضافية ، ثم يمررها إلى العرض.

نصائح أخرى

يبدو وكأنه محرك قالب هو ما تبحث عنه - اطلب من Google الكثير من النتائج. شخصيا ، أنا أحب ذكي كثيرا جدا.

(ورمي هذا الكتاب ، يبدو وكأنه ... قديم)

يبدو MVC (وحدة التحكم في عرض النموذج) أنه قد يتناسب مع احتياجاتك. يمكنك أن تقرأ عن ذلك هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top