في هذا الدرس 6تصفّح المواضيع
تتميز إصدارات Laravel 11 و12 بهيكلة مجلدات جذرية مبسطة للغاية تهدف إلى إبقاء المشروع منظماً وواضحاً مع الاحتفاظ بكامل المرونة الهندسية. يستقر الكود البرمجي في مجلد app/، والمسارات في routes/، والإعدادات في config/، والقوالب في resources/، والملفات التشغيلية في storage/.
- فصل واضح للمسؤوليات (Separation of Concerns): عزل كود التطبيق عن ملفات الإعدادات والملفات العامة للمتصفح.
- عزل المكتبات الخارجية (Vendor Isolation): حفظ جميع حزم Composer داخل مجلد vendor/ دون تعديلها يدوياً.
- مجلد قاعدة البيانات (Database Folder): تجميع ملفات التهجير والبذور والمصانع داخل مجلد database/.
<?php
// Core root folders in a fresh Laravel 12 project
$folders = [
'app' => 'Models, Controllers, Providers',
'bootstrap' => 'Application wiring (app.php)',
'routes' => 'Web and console route files',
];
echo $folders['bootstrap'];
يحتضن مجلد app/ الكود الأساسي لمنطق مشروعك ويرتبط مباشرة بفضاء الأسماء App\ وفق معيار التحميل التلقائي PSR-4. في تثبيت Laravel 12 الجديد، يبدأ المجلد بثلاثة مجلدات فرعية فقط هي Http/Controllers وModels وProviders، وتُنشأ المجلدات الإضافية تلقائياً عند توليدها بأوامر Artisan.
- مجلد المتحكمات (app/Http/Controllers): يضم كلاسات المتحكمات المسؤولة عن معالجة طلبات الويب.
- مجلد النماذج (app/Models): يحتوي على كلاسات Eloquent التي تمثل جداول قاعدة البيانات.
- مجلد مزودي الخدمة (app/Providers): يضم ملف AppServiceProvider لتسجيل وتجهيز خدمات النظام.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider {
// Core provider inside app/Providers
}
يعتمد الأمان المعماري في Laravel على الفصل الحاسم بين مجلد public/ وبقية مجلدات النظام. يجب توجيه جذر خادم الويب حصرياً نحو مجلد public/ الذي يضم نقطة الدخول index.php والملفات الثابتة، بينما تُحفظ السجلات والقوالب المترجمة والملفات الخاصة بأمان داخل مجلد storage/.
- نقطة الدخول (public/index.php): الملف الوحيد الذي يستقبل طلبات HTTP ويطلق دورة حياة الإطار.
- سجلات النظام (storage/logs): يحفظ تقارير الأخطاء والأحداث داخل الملف storage/logs/laravel.log.
- ملفات الإطار المؤقتة (storage/framework): يخزن القوالب المترجمة وملفات الجلسات والذاكرة المؤقتة.
<?php
// Structure of public/index.php in Laravel 12
define('LARAVEL_START', microtime(true));
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
$app->handleRequest(Illuminate\Http\Request::capture());
يجمع مجلد routes/ كافة مسارات الروابط وأوامر الطرفية، بدءاً من ملف web.php لمسارات المتصفح وملف console.php للمهام المجدولة. وفي المقابل يضم مجلد config/ ملفات مصفوفات PHP منظمة تضبط إعدادات التطبيق، واتصالات قواعد البيانات، والبريد، والذاكرة المؤقتة.
- مسارات الويب (routes/web.php): يضم مسارات المتصفح المزودة تلقائياً بحماية الجلسات وCSRF.
- مسارات الطرفية (routes/console.php): يعرف أوامر Artisan المبسطة وجدولة المهام الدورية.
- ملفات الإعدادات (config/*.php): تعيد مصفوفات ترابطية منظمة تُقرأ بالصيغة النقطية في أنحاء النظام.
<?php
// Excerpt from config/app.php returning settings
return [
'name' => env('APP_NAME', 'Laravel'),
'env' => env('APP_ENV', 'production'),
'timezone' => 'UTC',
];
يمثل ملف bootstrap/app.php القلب النابض لمعمارية Laravel 11 و12 الحديثة، حيث استبدل ملفات النواة القديمة المتفرقة بواجهة تهيئة موحدة وأنيقة. عبر استدعاء Application::configure، يربط هذا الملف مسارات التوجيه والبرمجيات الوسيطة ومعالجة الاستثناءات في مكان مركزي واحد.
- بدء التهيئة (Application::configure): يؤسس نسخة التطبيق انطلاقاً من المسار الجذري للمشروع.
- ربط المسارات (withRouting Method): يسجل ملفات web.php وconsole.php ومسار فحص الجاهزية /up.
- الوسطاء والاستثناءات (withMiddleware & withExceptions): يدير البرمجيات الوسيطة ومعالجة الأخطاء مركزياً.
<?php
use Illuminate\Foundation\Application;
return Application::configure(dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
health: '/up',
)->create();
يساعد الفهم الدقيق لوظيفة كل مجلد في الحفاظ على نظافة المعمارية البرمجية مع نمو المشروع وإضافة عشرات الميزات الجديدة. يمثل هذا الدليل المرجعي خريطة العمل اليومية عند إنشاء الكلاسات أو حفظ الملفات المرفوعة أو إعداد خوادم النشر.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو التقليدي | معيار Laravel 12 الحديث |
|---|---|---|
| حماية جذر الموقع | وضع ملفات الإعدادات والاتصال بقاعدة البيانات في المجلد العام | حصر جذر الخادم في مجلد public/ وعزل الكود والإعدادات خارجه |
| تهيئة نواة النظام | توزيع الإعدادات بين Kernel.php وHandler.php وRouteServiceProvider | تهيئة مركزية موحدة عبر Application::configure في bootstrap/app.php |
| كثافة مجلد app | عشرات المجلدات الفرعية الفارغة المولدة مسبقاً دون استخدام | بنية رشيقة تبدأ بالأساسيات وتولد المجلدات عند الطلب بأوامر Artisan |
| فحص صحة الخادم | برمجة ملفات فحص يدوية للتأكد من استجابة التطبيق | مسار جاهزية مدمج /up مفعل افتراضياً لمراقبة حالة الخادم |
# Inspect application directory paths and status via CLI
php artisan about
# Verify writable cache directory contents
ls bootstrap/cache
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «هيكلة مجلدات مشروع Laravel وملف Bootstrap App» مفاهيم نظرة شاملة لمجلدات المشروع الجذرية، ومكونات مجلد الكود الأساسي app، ودور مجلدي public و storage وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إعدادات تطبيق Laravel ومتغيرات ملف البيئة» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Directory Structure هيكلة المجلدات
- استكشاف هيكلة مجلدات Laravel 11/12 المبسطة وكيف يدير ملف bootstrap/app.php إعدادات المسارات والبرمجيات الوسيطة والاستثناءات.
- للمراجعة
- 02 Root Project Folders Overview نظرة شاملة لمجلدات المشروع الجذرية
- المفهوم الهندسي والتطبيق العملي المباشر لقسم نظرة شاملة لمجلدات المشروع الجذرية في إطار العمل Laravel 12.
- للمراجعة
- 03 Inside the app Directory مكونات مجلد الكود الأساسي app
- المفهوم الهندسي والتطبيق العملي المباشر لقسم مكونات مجلد الكود الأساسي app في إطار العمل Laravel 12.
- للمراجعة
- 04 Public and Storage Directories دور مجلدي public و storage
- المفهوم الهندسي والتطبيق العملي المباشر لقسم دور مجلدي public و storage في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «نظرة شاملة لمجلدات المشروع الجذرية» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «مكونات مجلد الكود الأساسي app» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من نظرة شاملة لمجلدات المشروع الجذرية في إطار العمل Laravel 12؟
يسهم نظرة شاملة لمجلدات المشروع الجذرية في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «مكونات مجلد الكود الأساسي app» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة دور مجلدي public و storage بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة دور مجلدي public و storage.
لماذا يُعد تطبيق وظيفة مجلدي routes و config مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تهيئة التطبيق بملف bootstrap/app في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في جدول مرجعي لمجلدات مشروع Laravel؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.