قسم قذر php. تضمين الملفات في PHP باستخدام التضمين والمطلوب. الفرق بين عناصر القسم والمقال

مقال يستكشف عنصر قسم HTML من فئة التقسيم.

الغرض من عنصر القسم

يُستخدم عنصر القسم لإنشاء قسم في مستند يجمع بعض محتوى الموضوع معًا. يجب الإشارة إلى اسم كل قسم في المستند (الموضوع). يتم ذلك عادةً باستخدام الرؤوس (عناصر h1-h6).

عنوان القسم

محتوى القسم ...

تُستخدم عناصر القسم بشكل شائع في المواقف التالية:

  • لترميز الأقسام داخل القسم. على سبيل المثال ، لترميز الفصول في مقال ، أو علامات التبويب في مربع الحوار ، أو الأقسام في أطروحة ، إلخ.
  • لتجميع عدة أقسام في مجموعة مواضيعية واحدة. على سبيل المثال ، لتجميع آخر الأخبار على الموقع ، والتعليقات على مقال ، وما إلى ذلك.

وبالتالي ، يجب استخدام عنصر القسم لبعض المحتويات فقط إذا كان يحتوي على عنوان وجزء من شيء آخر.

باستخدام عنصر القسم

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

عنوان المقال

التعليقات (1)

رأس التعليق

نص التعليق ...

رأس التعليق

نص التعليق ...

عنوان المقال التعليقات عنوان التعليق عنوان التعليق

على سبيل المثال ، ضع في اعتبارك استخدام عناصر القسم لإنشاء أقسام داخل عنصر المقالة:

عنوان كتاب

الفصل الأول

الفصل الثاني

الفصل الثالث

الملحق أ

ملحق ب

سيحتوي المثال أعلاه على المخطط التفصيلي التالي:

عنوان الكتاب الفصل الأول الفصل الثاني الفصل الثالث الملحق أ الملحق ب

حدود استخدام عنصر القسم

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

عندما يحتاج المؤلف إلى تجميع المحتوى لمجرد تصميمه أو معالجته في JavaScript ، فإن أفضل مكان له هو استخدام عنصر div. لا يضيف عنصر div ، بخلاف عنصر القسم ، دلالات إلى المستند ولا يشارك في إنشاء مخططه التفصيلي (مخطط تفصيلي).

الفرق بين عناصر القسم والمقال

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

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

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

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

لنلقِ الآن نظرة على طرق توصيل الملفات بمزيد من التفاصيل:

باستخدام وتشمل وتتطلب

لن تتمكن من العثور على فرق جوهري بين هذين التعليمات بكل رغبتك ، ولكن هناك فروق دقيقة:

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

لنأخذ مثالاً بسيطًا لفهم أفضل للموضوع.

لدينا الموقع المصغر الخاص بنا حيث يكون الرأس والتذييل متماثلين في جميع الصفحات ، ويتغير نص المستند.

نقوم بإنشاء ملفات header.php و footer.php حيث نضع الكود الذي سيكون هو نفسه في جميع الصفحات ، وفي الملفين index.php و newpage.php سنقوم بتوصيل الأجزاء الثابتة. نتيجة لذلك ، نحصل على:

محتوى Header.php

< header> < nav> < a href= "newpage1.php" title= "عنصر القائمة" >عنصر القائمة < a href= "newpage2.php" title= "عنصر القائمة" >عنصر القائمة < a href= "newpage3.php" title= "عنصر القائمة" >عنصر القائمة

محتوى Footer.php

< footer> < p>صنع بواسطتنا

محتوى صفحات الموقع الأخرى

مينيسيت

الكثير من المعلومات المفيدة

نتيجة تحميل صفحتنا حصلنا على الصورة التالية:

كما نرى ، كل شيء يعمل بشكل رائع.

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

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

في الواقع ، الخط ما عليك سوى نسخ محتويات الملف بالكامل ، المسار الذي نشير إليه ، داخل المستند الموجود فيه.

باستخدام تشمل _ مرة واحدة وتتطلب _ مرة واحدة

عند العمل على موقع ما ، قد تنشأ مشاكل بسبب حقيقة أن نفس جزء الكود قد تم تضمينه في نفس الملف بشكل متكرر.

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

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

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

في المذكرة

  • لتسهيل التمييز بين ملفات صفحات الموقع وملفات شظاياها ، والتي نقوم بتضمينها فيها ، تضيف الملفات المضمنة عادةً جزءًا inc إلى الاسم. بالنظر إلى هذا النهج في مثالنا ، سنحصل على ملف header.inc.php من ملف header.php وما إلى ذلك. يمكن أن يسهل هذا النهج فهم بنية الموقع في المستقبل.
  • يرث الكود من الملف الذي نربطه نطاق الخط المتصل به. Tobish فقط داخل الصفحة سيكون لها نطاق عالمي ، وداخل وظيفة سيكون لها نطاق محلي.
  • يمكننا استخدام التضمين مع الطلب أينما نريد. حتى داخل النصوص.

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

اسم السمة نوع من إلزامي تقصير وصف
اسم سلسلة نعم غير متوفر اسم القسم
حلقة مختلط نعم غير متوفر قيمة تحدد عدد تكرارات الحلقة.
بداية عدد صحيح لا 0 فهرس الموضع الذي ستبدأ عنده الحلقة. إذا كانت القيمة سالبة ، يتم حساب موضع البداية من نهاية المصفوفة. على سبيل المثال ، إذا كان متغير الحلقة يحتوي على 7 عناصر وكانت قيمة سمة البداية هي -2 ، فسيكون فهرس البداية 5. يتم اقتطاع القيم غير الصالحة (القيم خارج المصفوفة) تلقائيًا إلى أقرب قيمة صالحة.
خطوة عدد صحيح لا 1 قيمة الخطوة المستخدمة لاجتياز المصفوفة. على سبيل المثال ، تشير الخطوة = 2 إلى اجتياز المصفوفة بالعناصر 0،2،4 ... إذا كانت الخطوة سالبة ، فسيتم اجتياز المصفوفة في الاتجاه المعاكس.
الأعلى عدد صحيح لا 1 الحد الأقصى لعدد مرات تكرار الحلقة.
مشاهده قيمة منطقية لا حقيقية يشير إلى إظهار هذا القسم أم لا

ملحوظة

بدءًا من Smarty 1.5.0 ، تم تغيير بناء الجملة لمتغيرات خاصية الجلسة من (٪ sectionname.varname٪) إلى ($ smarty.section.sectionname.varname). لا يزال بناء الجملة القديم مدعومًا ، لكنك لن ترى سوى أمثلة للصيغة الجديدة.

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

ملاحظة تقنية

إذا لم يتم تحديد سمات الخطوة والبدء ، فسيكون الفهرس هو نفسه سمة قسم التكرار ، باستثناء أنه يبدأ من 0 بدلاً من 1.

يستخدم التكرار لعرض رقم التكرار الحالي للحلقة.

ملحوظة

هذه القيمة مستقلة عن خصائص البدء والخطوة والحد الأقصى ، على عكس خاصية الفهرس. أيضًا ، تبدأ التكرارات من نقطة واحدة ، بدلاً من الصفر مثل المؤشرات. rownum مرادف لخاصية التكرار ، فهي تعمل بنفس الطريقة.

مثال 7.38. خاصية (قسم) التكرار

تعيين ("custid"، $ id) ؛ ؟> (اسم القسم = cu loop = $ custid start = 5 step = 2) iteration = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ الجزء)

نتيجة هذا المثال:

التكرار = 1 فهرس = 5 معرف = 3005
التكرار = 2 مؤشر = 7 معرف = 3007
التكرار = 3 مؤشر = 9 معرف = 3009
التكرار = 4 مؤشر = 11 معرف = 3011
التكرار = 5 مؤشر = 13 معرف = 3013
التكرار = 6 مؤشر = 15 معرف = 3015

يستخدم هذا المثال خاصية التكرار لطباعة عنوان الجدول كل خمسة أسطر (يستخدم (if) مع عامل التشغيل mod).

(اسم القسم = حلقة مشتركة = جهات اتصال بالدولار) (إذا كان $ smarty.section.co.iteration٪ 5 == 1) (/ لو) (/ الجزء)
الاسم>الصفحة الرئيسيةزنزانةبريد الالكتروني
عرض ($ contacts.name) ($ contacts.home) ($ contacts.cell) ($ contacts.email)


وثيقة جدول المحتويات

1. وظيفة config_load

بناء الجملة:
(config_load file = "اسم الملف")

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

مثال:
(config_load file = "task.conf")

2. التقاط وظيفة

بناء الجملة:

(اسم الالتقاط = "block_name"
تعيين = "variable_name") ...
(/ إلتقاط)

تم تصميم هذه الوظيفة لتجميع ناتج القالب في متغير بدلاً من عرضه على الشاشة.

سيتم كتابة أي شيء بين (اسم الالتقاط = "varname") و (/ capture) إلى متغير باسم varname. يمكن استخدام المحتوى الذي تم التقاطه بهذه الطريقة في القالب باستخدام المتغير الخاص $ smarty.capture.varname ، حيث يمثل varname القيمة التي تم تمريرها إلى سمة الاسم الخاصة بوظيفة الالتقاط. إذا لم يتم تحديد اسم متغير ، فسيتم استخدام الاسم الافتراضي.

يحدد المعامل الثاني تعيين اسم المتغير الذي سيتم تعيين قيمة الإخراج الملتقطة له. هذه المعلمة ، مثل الاسم ، اختيارية.

3. وظيفة القسم

بناء الجملة:

(اسم القسم = "اسم القسم"
حلقة = "variable_for_out_number_iterations"
[، start = "start_position_index"]
[، step = "step"] [، max = "max_iterations"]
[، show = "show_or_section"]) ...
(/ الجزء)

القسم هو حلقة لاجتياز عناصر المصفوفة. المعلمات المطلوبة هي name ، والتي تُستخدم لتعيين اسم القسم ، والحلقة ، وهي متغير يحدد عدد تكرارات الحلقة.

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

(اسم القسم = حلقة فنية = $ title)

العنوان: ($ title)

(/ الجزء)

مثال 15.8. حلقة للتكرار على عناصر المصفوفة

4. وظيفة foreach

بناء الجملة:

(foreach from = "array_name"
العنصر = "current_item_name")
... (/ foreach)

بالإضافة إلى ذلك ، يمكنك استخدام مفتاح السمات الإضافية - اسم المفتاح للعنصر الحالي للمصفوفة والاسم - اسم الحلقة ، التي يمكنك من خلالها الوصول إلى خصائصها. سمات العنصر والعنصر مطلوبة.

حلقات Foreach هي بديل لحلقات المقطع. تعمل وظيفة foreach إلى حد كبير مثل حلقة foreach في PHP.
(لكل من = $ articles item = art)
العنوان: ($ art)

(/ foreach)

مثال 15.9. حلقة Foreach

حلقات Foreach لها خصائصها الخاصة. يمكنك الوصول إليهم بهذه الطريقة: ($ smarty.foreach.foreachname.varname) ، حيث foreachname هو اسم الحلقة المحددة بواسطة معلمة الاسم و varname هو اسم الخاصية.

5. عامل تشغيل if، elseif، else

بناء الجملة:

(إذا كان التعبير) action_block
(تعبير آخر 1) action_block1
(آخر) action_block2
(/ لو)

إجراء عامل التشغيل هو نفسه تقريبًا عامل تشغيل PHP إذا ... elseif ... else.

يمكن استخدام عوامل المقارنة التالية في التعبيرات: eq، ne، neq، gt، lt، lte، le، gte، ge، is even، is odd، not even، not odd، div by، even بواسطة ، فردي بـ ، == ،! = ،> ،<, <=, >=. يجب فصل كل منها عن القيم المحيطة بمسافات. يمكنك استخدام الأقواس في التعبيرات واستدعاء وظائف php.

(if $ name eq "Vasya")
مرحبًا يا فاسيا.
(elseif $ name eq "Petya")
مرحبًا ، بيتيا.
(آخر)
أهلا بك. من أنت؟
(/ لو)

مثال 15.10. if ، elseif ، عبارات أخرى

(* لن يعمل هذا المثال نظرًا لعدم وجود مسافات حول عوامل المقارنة *)
(إذا كان $ name == "Vasya" || $ name == "Petya")
...
(/ لو)
مثال 15.11. مثال مكسور