عند العمل على مشروع باستخدام Laravel، قد تواجه مفاهيم مثل @extends
و @include
في ملفات العرض (views). تلك المفاهيم مهمة جداً في بناء تركيب وتنظيم مشاريع Laravel بشكل فعال. فلنلقِ نظرة عميقة على كل منهما لفهم الاختلاف بينهما ولماذا يتم استخدام كل منهما في سياق معين.
تبدأ المقارنة مع @include
. عند استخدام @include
، فإنك ببساطة تدمج محتوى ملف عرض آخر داخل العرض الحالي. هذا يعني أنك تقوم بإدراج محتوى معين من ملف آخر مباشرة داخل ملف العرض الحالي. على سبيل المثال، عندما تقوم بكتابة @include('layouts.masters.main')
، فإن Laravel سيضمن إدراج محتوى ملف main.blade.php
من داخل مجلد masters
داخل مجلد layouts
.
أما بالنسبة لـ @extends
، فهو يستخدم لتوسيع (extending) تخطيط (layout) معين في مشروع Laravel. عندما تستخدم @extends
، فإنك في الواقع تعبر عن أن ملف العرض الحالي يوسع (extends) تخطيط آخر. بمعنى آخر، يمكنك أن تعتبر @extends
كوسيلة لإضافة إطار (frame) عمل لملف العرض الحالي.
عند استخدام @extends
، عادةً ما تكون هناك تعليمات @section
في الملف الأساسي (الذي يتم توسيعه) تحدد الأماكن التي يمكن للعرض الفرعي استبدالها أو إدخال المحتوى فيها. بعبارة أخرى، يمكنك القول إن @extends
يسمح لك بإعادة استخدام تخطيط معين وتعديله أو استبدال أجزاء منه حسب احتياجاتك.
في مشروعك، السبب وراء استخدام @extends
في المشروع الذي تتابعه في الدورة التعليمية هو لأنه على الأرجح هناك تخطيط أساسي (master layout) يحدد الهيكل العام للصفحات في موقعك. عند استخدام @extends('layouts.masters.main')
، يتم توسيع هذا التخطيط الأساسي لتضمين محتوى الصفحة الحالية داخله، مما يضمن الحفاظ على التنسيق والبنية العامة للموقع.
لذا، بإختصار، الفرق بين @include
و @extends
يكمن في الغرض الذي يخدمانه كل منهما. @include
يستخدم لإدراج محتوى محدد من ملف آخر داخل العرض الحالي، بينما @extends
يستخدم لتوسيع تخطيط أساسي لتضمين محتوى العرض الحالي داخله.
المزيد من المعلومات
علاوةً على ذلك، يمكن أن يوفر استخدام @extends
تنظيمًا أفضل لمشاريعك عندما تتطلب عدة صفحات استخدام نفس التخطيط الأساسي. على سبيل المثال، إذا كان لديك موقع ويب يتألف من صفحات متعددة مثل الصفحة الرئيسية، صفحة حول، صفحة اتصل بنا، وهلم جرا، يمكنك استخدام نفس تخطيط أساسي لتحديد هيكل الصفحات للحفاظ على الاتساق.
بالإضافة إلى ذلك، يمكنك استخدام @extends
بالاشتراك مع @yield
و @section
لجعل تخطيطاتك قابلة للتخصيص بشكل ديناميكي. على سبيل المثال، يمكنك تحديد مناطق في التخطيط الأساسي باستخدام @yield
حيث يمكن للصفحات الفرعية إدراج محتوى مختلف في تلك المناطق باستخدام @section
.
لذا، عندما تختار بين استخدام @include
و @extends
، يجب أن تأخذ في الاعتبار الهدف من كل منها وما إذا كانت تلبي احتياجات مشروعك بشكل أفضل. إذا كنت بحاجة إلى إدراج محتوى محدد من ملف آخر في عرضك الحالي، فاستخدم @include
. وإذا كنت بحاجة إلى توسيع تخطيط أساسي لتحديد هيكل الصفحة بشكل عام، فاستخدم @extends
.
في النهاية، يمكن لاستخدامك الصحيح لهذه المفاهيم في Laravel تحسين كفاءة تطويرك وجعل تنظيم مشاريعك أكثر سهولة وإدارةً. تذكر دائمًا أن لغة Blade في Laravel توفر العديد من الأدوات القوية لإدارة العرض وتقديم المحتوى بشكل مرن وفعال.