ساختار برنامه در لاراول

در این مقاله از سری مقالات آموزش Laravel سایت نارنجک، ساختار برنامه در لاراول رو با هم بررسی میکنیم.
ساختار برنامه در لاراول

پوشه app/
این پوشه، پوشهی اپلیکیشن(application) هستش. تقریبا تمام سورس کدها، کلاسها و فایلهای پروژه در این پوشه قرار داره. پوشه app شامل زیرپوشههای Events، Exeptions، Controllers، Middleware و… هست که در ادامه هر کدوم از این پوشهها رو بیشتر بررسی میکنیم.
پوشه app/Console
پوشه Console شامل دستورات ضروری artisan هست. این پوشه دارای یک دایرکتوری به نام Commands هست، که تمام دستورات با امضای(signature) مناسب اعلام میشن. فایل Kernal.php کارهای گفته شده در Inspire.php رو فراخونی میکنه. اگه نیاز به فراخوانی دستور(command) خاصی در Laravel داشته باشیم، باید تغییرات مناسب رو تو این فهرست ایجاد کنیم.
پوشه app/Events
این پوشه شامل تمام eventهایی هست که تو پروژه ساختیم. پوشه events بصورت پیشفرض وجود نداره. زمانیکه دستور آرتیزان event:generate یا make:event رو تو خطفرمان(command line) اجرا کنیم، ساخته میشن.
پوشه app/Exceptions
پوشه app/Http
پوشه http شامل زیرپوشههایی به اسمهای Controllers ، Middleware ، Requests هست. پوشه Controllers شامل تمام کلاسهای controllerی هست که تو برنامه تعریف کردیم. پوشه middleware نیز شامل مکانیسم فیلتر و ارتباط بین پاسخ(response) و درخواست(request) برنامه هست. پوشه فرعی Requests هم شامل تمام درخواستهای برنامه هست.
پوشه app/Jobs
این پوشه بصورت پیشفرض وجود نداره و با دستور آرتیزان make:job ساخته میشه. پوشه jobs شامل فعالیتهایی هستن که صف(queue) میشن و تو برنامه لاراول استفاده میشن. درواقع jobها برنامههای زمانبری هستن که میتونن تو صف قرار بگیرن و در پسزمینه به ترتیب اجرا بشن، بدون اینکه اجرای کنونی برنامه با اختلال همراه بشه. مثلا ارسال ایمیل به گروه زیادی از کاربران و…
پوشه app/Listeners
این پوشه هم بصورت پیشفرض وجود نداره و با دستور آرتیزان make:listener ساخته میشه. زمانیکه یک رویداد(event) اجرا بشه، میتونیم به اون یک یا چند کار متصل کنیم که انجام بشه. این کارها رو تو کلاسهایی مینویسیم که تو این پوش قرار میگیرن. به این کارها listenerها میگیم. مثلا وقتی کاربر خریدی انجام داد ایمیلی شامل اطلاعات خرید و همچنین پیامکی شامل وضعیت خرید برای کاربر ارسال بشه.
پوشه app/Policies
این پوشه شامل کلاسهایی هست که منطق دسترسیها و مجوزها(authorization) رو تعریف میکنه. مثلا مشخص میکنه که یک کاربر اجازه دسترسی به یک صفحه رو داره یا نه. این پوشه نیز بصورت پیشفرض وجود نداره و با دستور آرتیزان make:policy ساخته میشه.
پوشه app/Providers
پوشه app/Models
این پوشه که از لاراول ۸ به بعد به لاراول اضافه شده شامل، مدل(models)های ساخته شده در برنامه لاراول هستن.
پوشه Bootstrap
پوشه Config
این پوشه همونطور که اسمش مشخصه وظیفهی پیکربندی(configuration) فریمورک لاراول رو برعهده داره. مثلا پیکربندی مربوط به اتصال به دیتابیس، کش کردن، ایمیل و… فایلهای دایرکتوری Config بصورت زیر هستن:
پوشه Database
پوشه database/factories
پوشه database/seeds
پوشه database/migrations
این پوشه شامل کوئریهایی است که انتقال دیتابیس استفاده شده در برنامه رو آسونتر میکنه. برای هر کدوم از جداول پروژه یه فایل در این پوشه درست میکنیم که اطلاعات ستونهای اونها تو فایل مرتبط با جدول نوشته میشه. با اجرای دستور php artisan migrate در خطفرمان تمام جدولهای نوشته شده تو این پوشه در دیتابیس پروژه ساخته میشه.
پوشه Public
پوشه Resources
این پوشه شامل فایلهای view برنامه هست. همچنین فایلهای کامپایل نشدهی css و js در این دایرکتوری قرار دارن. در این پوشه فایلهای مربوط به زبان برنامه (fa، en و…) قرار دارن.
پوشه Routes
این پوشه یکی از پوشههای مهم لاراول هستش. در لاراول، همه درخواستها(آدرسهایی که کاربر وارد میکنه) با کمک مسیرها(routes) بررسی می شن. مسیریابی(route) اصلی درخواست را به کنترل کنندههای مرتبط هدایت می کنه. این پوشه شامل چهار فایل زیر هست:
فایل api.php
زمانی مسیرهای پروژه رو تو این فایل مینویسیم که بخوایم اونها رو بصورت RESTful API یا stateless بنویسیم. در این روش از سشنها(sessions) و کوکیها(cookies) استفاده نمیشه و در هر درخواست باید رشتهی احراز هویت کاربر(Token) وجود داشته باشه.
فایل channels.php
اگه بخوایم از WebSocketها استفاده کنیم، از فایل channels.php برای مسیردهی استفاده میکنیم.
فایل console.php
اگه نیاز داشتیم از طریق console یه سری از کارهای برنامه رو انجام بدیم از فایل console.php استفاده میکنیم.
فایل web.php
اگه قرار نیست پروژه بصورت stateless یا RESTful API باشه، تمام مسیرهای پروژه تو این فایل نوشته میشن. مسیرهایی که تو این فایل نوشته میشن بصورت پیشفرض شامل میدلور(middleware)های Session، CSRF Protection، Cookie Encryption هستن.
پوشه Storage
پوشه storage/app
این پوشه میتونه شامل فایلهایی باشه که به طور متوالی فراخوانی میشن.
پوشه storage/framwork
پوشه storage/logs
پوشه Test
پوشه Vendor
خب این آموزش هم تموم شد. امیدوارم براتون مفید بوده باشه.
دیدگاهتان را بنویسید