Skip to content

Latest commit

 

History

History
242 lines (151 loc) · 18.7 KB

File metadata and controls

242 lines (151 loc) · 18.7 KB

مجلدات التطبيق

مقدمة

بصورة افتراضية تمت هيكلة تطبيق لارفل ليزودك بنقطة بداية ممتازة وسهلة للمشاريع الصغيرة والكبيرة ، ولكن يمكنك القيام باعادة هيكلة التطبيق والملفات بالصورة التي تناسبك، لارفل لا يقوم بفرض اي قيود على اماكن وجود الكلاسات في التطبيق طالما ان الcomposer يمكنه القيام بالتضمين التلقائي لهذه الكلاسات.

اين يوجد المجلد Models ؟

عند البدأ في تطوير تطبيقات لارفل يحتار عدد من المبرمجين عن مكان المجد models. لقد وجدنا ان كلمة "models" لها معاني مختلفة عند المبرمجين . فبعضهم يستعمل كلمة "model" للاشارة الى bussiness logic ، في حين ان الاخرين يستخدمون نفس الكلمة للاشارة الى الكلاسات والواجهات التي تتفاعل مع قواعد البيانات العلائقية لهذا السبب ، اخترنا ان نضع ال Eloquent (والمقصود به المعنى الثاني لكلمة model) داخل المجلد app بصورة افتراضية ، مع امكانية تغير مكانه حسب ما يريد المبرمج

محتويات المجلد الرئيسي للتطبيق

المجلد App

المجلد app يحتوي على الاكواد الفعلية لتطبيق لارفل ، وسنقوم بتفصيل هذا المجلد قريبا ، تقريبا جميع الكلاسات في تطبيق لارفل توجد داخل هذا المجلد

المجلد Bootstrap

المجلد bootstrap يحتوي على الملف app.php وهو الملف الذي يقوم باجراء العمليات الاولية لاطار العمل، هذا المجلد ايضا يحتوي علي المجلد cache والذي يحوي جميع الملفات التي يقوم اطار العمل بإنتاجها وحفظها ليعمل التطبيق بصورة افضل ، حيث يتم تخزين المسارات والاعدادات المحفوظة فيه ليعمل التطبيق بصورة افضل.

المجلد Config

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

المجلد Database

المجلدdatabase يحتوي على الملفات الخاصة بقواعد البيانات مثل migrations (وهي كلاسات تمثل تصميم جداول قواعد البيانات) ، وكذلك model factories (وهي عبارة كلاسات تستخدم لانشاء قيم ابتدائية في جداول قواعد البيانات) ، والseeds (وهي كلاسات تستخدم لتعبئة الجداول بمحتوى مؤقت ليساعدك اثناء تطوير التطبيق )
، كما يمكن ان تستخدم هذا المجلد لتخزين قواعد البيانات مثل SQLite

المجلد Public

المجلد public يحتوي على الملف index.php والذي هو مدخل عمل التطبيق حيث يتم تحويل جميع طلبات تصفح التطبيق اليه ويقوم بتحميل اعدادات التطبيق ، كما يحتوي هذا المجلد على ال assets مثل الصور وملفات ال javascript وcss

المجلد Resources

المجلد resources يحتوى على views (واجهات التطبيق) كما يحتوي علي ملفات الraw مثل sass, less او javascript ، كما يتضمن هذا المجلد جميع ملفات الترجمة .

المجلد Routes

المجلدroutes يحتوي علي جميع ملفات تعريف المسارات لتطبيقك ، بصورة افتراضية يتضمن تطبيق اللارفل عدة ملفات لتعريف المسارات web.php, api.php, console.php و channels.php.

الملف web.php يحتوي المسارات التي قام الكلاس RouteServiceProvider بوضعها في middleware
المسمى web

(middleware هو عبارة كلاس يعمل يستخدم لتطبيق قيود على طلب التصفح http request )

حيث ان الmiddleware web يذود التعامل مع seesion (الجلسات) , csrf protection (آلية للحماية من ثغرات csrf) وتشفير الكوكيز ،اذا لم تريد ان تقوم ببناء api داخل التطبيق الخاص بك يفترض ان تضع كافة مسارات المشروع الخاص بك داخل الملف web.php

الملف api.php يحتوي المسارات التي قام الكلاس RouteServiceProvider بوضعها داخل الmiddlware المسمى api حيث يوفرrate limiting والمقصود بها انها ذات وصول محدد ، حيث ان المسارات التي يتم تعريفها تحت الmiddlware المسى web تستخدم الtoken في عملية authenticated (التوثيق) ولا يمكنها التعامل مع الجلسات .

الملف console.php هو المكان الذي يتم فيه تعريف كافة دوال تنفيذ الاوامر ، او ما يمسمى Closure (مفهوم برمجي يرمز الى دالة داخل دالة) ، حيث ان كل Closure تقوم بتعريف امر معين يتم تنفيذه بصورة سهلة جدا، هذا الملف لايتعامل مع طلبات http ، فقط يقوم بتعريف مسارات لاوامر يتم تفيذها داخل التطبيق

الملف channels.php الملف هو المكان الذي يمكنك فيه تسجيل جميع قنوات بث الأحداث التي يدعمها تطبيقك.

المجلد Storage

المجلد storage يحتوي على جميع الواجهات بعد ان يقوم اطار العمل بترجمتها ، كما تحتوى على ملفات الجلسات في حالة تم اعداد الجلسات ليتم. تخزينها في الملفات ، وكذا مجموعة من الملفات الاخرى التي تم انتاجها بواسطة اطار العمل ، هذا المجلد تم تقسيمه المجلدات app, framework, و logs

المجلد app قد يتم استخدامه لتخزين الملفات التي انتاجها بواسطة التطبيق ، المجلد framework يستخدم لتخزين الملفات التي يتم انتاجها بواسطة اطار العمل مثل الملفات والcaches . اخيراً المجلد logs يتم استخدامه لتخزين جميع ملفات الlogs

المجلد storage/app/public قد تستخدمه لتخزين الملفات المدرجة بواسطة المستخدمين ، مثل صور البروفايلات ،ويجب ان يكون هذا المجلد عاماً (قابلاً للوصول) حتى نستطيع الوصول لهذه الملفات، ويتم ذلك عبر ربطه بالمجلد public الموجود في المجلد الرئيسي للمشروع ويتم ذلك عبر وضع اختصار داخل المجد public يشير الى المجلد storage/app/public وتتم هذه العملية عبر استخدام الامر php artisan storage:link.

المجلد Tests

المجلد tests يحتوي على الاختبارات الآلية الخاصة بك ، على سبيل المثال PHPUnit يأتي بصورة افراضية مع اللارفل
وكل كلاس داخل هذا المجلد يجب ان يكون اسمه ملحقاً بالكلمة Test (مثال UserTest.php) ، يمكنك ان تقوم بتنفيذ الاختبارات الالية التي قمت بكتابتها عبر تنفيذ الامر phpunit او php vendor/bin/phpunit.

المجلد Vendor

المجلد vendor يحتوي على المكتبات والاضافات التي تم تثبيتها بواسطة Composer.

محتويات المجلد App

اغلب الاكواد والكلاسات التي تتعامل معها يتم وضعها داخل المجلد app ، بصورة افتراضية الnamespace لهذا الملف هو App وذلك باستخدام التضمين التلقائي في Composer عبر PSR-4 autoloading standard.

المجلد app يحتوي مجموعة متنوعة من المجلدات الفرعية مثل Console, Http, و Providers. تعامل مع المجلدين الConsole و Http كواجهة برمجية لنواة التطبيق ، برتكول الHTTP و CLI هما وسيلتان للتواصل مع تطبيقك ، ولكنها لا يعنيان انهما الاكواد بعينهما ، بمعنى اخر هما طريقتان لاصدار الاوامر لتطبيقك ، المجلد Console يحتوي كل اوامر الArtisan ، بينما المجلدHTTP يحتوي controllers (المتحكمات) ، middleware و الrequests .

هنالك العديد من المجلدات الفرعية التي يتم انتاجها داخل المجلد app باستخدام الامر make وهو احد اوامر ال Artisan ، يمكنك استخدام هذا الامر لانتاج المجلدات مثلا يمكن انشاء مجلد app/Jobs بتنفيذ الامر make:job لانتاج كلاس لjob

{tip} عدد كبير جدا من الكلاسات الموجودة داخل المجلد app يمكن انتاجها بواسطة اوامر الArtisan ، يمكنك الاطلاع على هذه الاوامر عن طريق تنفيذ الامر php artisan list make في اداة تنفيذ الاوامر

المجلد Broadcasting

المجلدBroadcasting يحتوي جميع الكلاسات الخاصة broadcast channel (قنوات البث ) ، هذه الكلاسات يتم انتاجها عبر الامر make:channel ، بصورة افتراضية هذا المجلد غير موجود ، ولكن سيتم انشاءه عن انشاء اول كلاس قناة بث ، يمكن التعرف على المزيد من التفاصيل الخاصة بكلاسات قنوات البث داخل event broadcasting.

المجلد Console

المجلد Console يحتوي كافة اوامر ال Artisan التي تقوم بانشاءها ، حيث يمكن انشاء امر Artisan باستخدام الامر make:command. هذا المجلد يتحوي ايضا على console kernel الخاصة بك وهي المكان الذي يتم تسجيل الاوامر التي قمت بانشاءها ، بالاضافة الى scheduled tasks التي تم تعريفها.

المجلد Events

هذا المجلد غير موجود بصورة افتراضية . ويمكن انشاءه باستخدام الامر event:generate و make:event ، هذا المجلد يحتوي على الevent classes. وهي عبارة كلاسات تسخدم للقيام ببعض الاشياء عن وقوع حدث ما ، توفر اليها مرنة جدا في التعامل ( مثلا ان يتم استدعاء الكلاس بمجرد ان يقوم المستخدم بالتسجيل في التطبيق )

المجلد Exceptions

المجلد Exceptions يحتوي على الكلاسات الخاصة بمعالجة الاخطاء الخاصة بتطبيقك ، وهي ايضا مكان ممتاز بتضمين اي معالج يتم تشغيل بواسطة التطبيق ، اذا كنت تريد ان تقوم بتعديل آلية معالجة الاخطاء بين القيام بحفظها في ملف logاو عمل render لها فيمكنك التعديل على الكلاس Handler الموجود في هذا المجلد.

المجلد Http

المجلد Http يحتوي على controllers, middleware, و form requests. هو المكان الذي يتم فيه ادارة كافة المنطق الخاص بالتطبيق ، وكذلك معالجة جميع الrequests تتم في هذا المجلد

المجلد Jobs

هذا المجلد غير موجود بصورة افتراضية ، ولكن ستيم انشاءه بمجرد تنفيذ الامر make:job ، المجلد Jobs يحتوي علىqueueable jobs لتطبيقك . الJobs (المهام) يمكن ان يتم وضعها في قائمة الانتظار لحين تنفيذها او يمكن ان تنفذ بصورة متزامنة مع دورة حياة الrequest الحالي , المهام التي تنفذ بصورة متزامنة اثناء دورة حياة الطلب الحالي تسمى احيانا "commands" ويمكن الاطلاع عليها command pattern.

المجلد Listeners

هذا المجلد غير موجود بصورة افتراضية ، ولكن ستيم انشاءه بمجرد تنفيذ الامر event:generate او make:listener ، المجلد Listeners يحتوي على الكلاسات التي تقوم بمعالجة الاحداث events. تقوم Listeners ( المتصنتات ) باخذ نسخة من event وتقوم تنفيذ الامر الذي تم انشاءه لها ، على سبيل المثال عند استدعاء ال event الخاص بتسجيل المستخدم سنقوم بوضع متنصت على هذا ال event ليعمل بصورة فورية على ارسال بريد الكتروني للمستخدم

المجلد Mail

هذا المجلد غير موجود بصورة افتراضية ، ولكن ستيم انشاءه بمجرد تنفيذ الامر make:mail ، المجلد Mail يحتوي على الكلاسات الخاصة بك التي تمثل الايميلات التي ترسل بواسطة التطبيق ، تتيح لك هذه الكلاسات ان تقوم بكتابة كافة التفاصيل المتعلقة بالايميلات وبناء الايميل ككلاس منفصل ، وسهل ويتم ارساله باستخدام الدالة Mail::send

المجلد Notifications

هذا المجلد غير موجود بصورة افتراضية ، ولكن ستيم انشاءه بمجرد تنفيذ الامر make:notification ، المجلد Notifications يحتوي على الكلاسات الخاصة بالاشعارات التي ترسل من تطبيقك ، يمكن استخدام الاشعارات لارسال عدة انواع مثل ايميل ، Slack ، SMS او تخزينها في قاعدة البيانات

المجلد Policies

هذا المجلد غير موجود بصورة افتراضية ، ولكن ستيم انشاءه بمجرد تنفيذ الامر make:policy ، المجلد Policies يحتوي على الكلاسات الخاصة بالتفويض داخل تطبيقك ، التفويض يستخدم للتاكد من ان المستخدم لديه امكانية لتنفيذ الفعل ، لمذيد من التفاصيل يمكن مراجعة authorization documentation.

المجلد Providers

المجد Providers يحتوي علي service providers الموجودة في تطبيقك

Service providers تقوم باعداد التطبيق وذلك عن طريق binding services في داخل service container(حاوي الخدمات) , بالاضافة الى تسجيل ال events , او القيام باي مهام اخرى لاعداد تطبيقك لاستقبال الطلب القادم

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

المجلد Rules

هذا المجلد غير موجود بصورة افتراضية ، ولكن ستيم انشاءه بمجرد تنفيذ الامر make:rule ، المجلد Rules يحتوي على الكلاسات الخاصة بالتحقق من المدخلات وقم النماذج يمكنك الاطلاع على مزيد من التفاصيل validation documentation.