ساختار دایرکتوری
معرفی
ساختار برنامه پیش فرض لاراول برای ارائه یک نقطه شروع عالی برای برنامه های بزرگ و کوچک در نظر گرفته شده است. اما شما آزاد هستید که برنامه خود را هر طور که دوست دارید سازماندهی کنید. لاراول تقریباً هیچ محدودیتی برای مکان هر کلاس خاص اعمال نمی کند - تا زمانی که Composer بتواند کلاس را به طور خودکار بارگذاری کند.
تازه با لاراول؟ در حالی که ما شما را در ساخت اولین برنامه لاراول خود راهنمایی می کنیم، بوت کمپ لاراول را برای یک تور عملی از چارچوب بررسی کنید .
دایرکتوری ریشه
فهرست برنامه ها
دایرکتوری
app
حاوی کد اصلی برنامه شما است. به زودی این فهرست را با جزئیات بیشتری بررسی خواهیم کرد. با این حال، تقریباً تمام کلاس های برنامه شما در این دایرکتوری خواهند بود.
دایرکتوری بوت استرپ
دایرکتوری
bootstrap
حاوی
app.php
فایلی است که چارچوب را بوت استرپ می کند. این دایرکتوری همچنین یک
cache
دایرکتوری را در خود جای داده است که حاوی فایل های فریمورک تولید شده برای بهینه سازی عملکرد مانند فایل های کش مسیر و خدمات است.
دایرکتوری پیکربندی
دایرکتوری
config
، همانطور که از نام آن پیداست، حاوی تمام فایل های پیکربندی برنامه شما است. خواندن تمام این فایل ها و آشنایی با تمام گزینه های موجود ایده خوبی است.
دایرکتوری پایگاه داده
دایرکتوری
database
شامل مهاجرت های پایگاه داده، کارخانه های مدل و دانه های شما است. در صورت تمایل، می توانید از این دایرکتوری برای نگهداری پایگاه داده SQLite نیز استفاده کنید.
فهرست عمومی
دایرکتوری
public
حاوی
index.php
فایلی است که نقطه ورود همه درخواست هایی است که وارد برنامه شما می شوند و بارگذاری خودکار را پیکربندی می کند. این فهرست دارایی های شما مانند تصاویر، جاوا اسکریپت و CSS را نیز در خود جای می دهد.
فهرست منابع
فهرست شامل
نماهای
resources
شما
و همچنین دارایی های خام و غیرکامپایل نشده شما مانند CSS یا جاوا اسکریپت است.
فهرست مسیرها
فهرست
routes
شامل تمام تعاریف مسیر برای برنامه شما است. به طور پیش فرض، دو فایل مسیر با لاراول گنجانده شده است:
web.php
و
console.php
.
این
web.php
فایل حاوی مسیرهایی است که لاراول در
web
گروه میانافزار قرار میدهد که وضعیت جلسه، حفاظت CSRF و رمزگذاری کوکی را فراهم میکند. اگر برنامه شما یک API بدون حالت، RESTful ارائه نمی دهد، به احتمال زیاد همه مسیرهای شما در
web.php
فایل تعریف می شوند.
فایل
console.php
جایی است که شما می توانید تمام دستورات کنسول مبتنی بر بسته شدن خود را تعریف کنید. هر بسته به یک نمونه فرمان محدود می شود که به یک رویکرد ساده برای تعامل با روش های IO هر فرمان اجازه می دهد. اگرچه این فایل مسیرهای HTTP را تعریف نمی کند، نقاط ورودی (مسیرها) مبتنی بر کنسول را به برنامه شما تعریف می کند.
به صورت اختیاری، میتوانید فایلهای مسیر اضافی را برای مسیرهای API (
api.php
) و کانالهای پخش (
channels.php
)، از طریق دستورات
install:api
و
install:broadcasting
Artisan نصب کنید.
این
api.php
فایل حاوی مسیرهایی است که در نظر گرفته شده بدون حالت باشند، بنابراین درخواستهایی که از طریق این مسیرها وارد برنامه میشوند،
از طریق توکنها
احراز هویت میشوند و به وضعیت جلسه دسترسی ندارند.
این
channels.php
فایل جایی است که می توانید تمام کانال های
پخش رویداد
را که برنامه شما پشتیبانی می کند ثبت کنید.
فهرست ذخیره سازی
دایرکتوری
storage
شامل لاگ های شما، قالب های Blade کامپایل شده، جلسات مبتنی بر فایل، کش فایل ها و سایر فایل های تولید شده توسط فریم ورک است. این دایرکتوری به
app
,
framework
و
logs
دایرکتوری ها تفکیک شده است. دایرکتوری
app
ممکن است برای ذخیره فایل های تولید شده توسط برنامه شما استفاده شود. دایرکتوری
framework
برای ذخیره فایلها و کشهای ایجاد شده از چارچوب استفاده میشود. در نهایت،
logs
دایرکتوری حاوی فایل های گزارش برنامه شما است.
دایرکتوری
storage/app/public
ممکن است برای ذخیره فایل های تولید شده توسط کاربر، مانند آواتارهای نمایه، که باید برای عموم قابل دسترسی باشد، استفاده شود. شما باید یک پیوند نمادین ایجاد کنید که در
public/storage
آن به این دایرکتوری اشاره می کند. می توانید با استفاده از دستور Artisan پیوند را ایجاد کنید
php artisan storage:link
.
دایرکتوری تست ها
فهرست
tests
شامل تست های خودکار شماست. نمونه آزمایشهای واحد
آفت
یا
PHPUnit
و آزمایشهای ویژگی خارج از جعبه ارائه میشوند. هر کلاس آزمایشی باید با کلمه پسوند باشد
Test
. می توانید تست های خود را با استفاده از دستورات
/vendor/bin/pest
یا اجرا کنید
/vendor/bin/phpunit
. یا اگر میخواهید نمایش دقیقتر و زیباتری از نتایج آزمون خود داشته باشید، میتوانید تستهای خود را با استفاده از
php artisan test
دستور Artisan اجرا کنید.
فهرست فروشنده
دایرکتوری حاوی وابستگی های
Composer
vendor
شما است
.
فهرست برنامه ها
اکثر برنامه های شما در
app
دایرکتوری قرار دارند. به طور پیشفرض، این فهرست در زیر فضای نام قرار دارد
App
و توسط Composer با استفاده از
استاندارد بارگیری خودکار PSR-4
بارگیری میشود .
به طور پیش فرض،
app
دایرکتوری شامل
Http
،
Models
و
Providers
دایرکتوری ها است. با این حال، با گذشت زمان، با استفاده از دستورات make Artisan برای تولید کلاسها، دایرکتوریهای متنوع دیگری در داخل فهرست برنامه تولید میشوند. برای مثال،
app/Console
دایرکتوری وجود نخواهد داشت تا زمانی که
make:command
دستور Artisan را برای تولید یک کلاس فرمان اجرا کنید.
هر دو دایرکتوری
Console
و
Http
دایرکتوری در بخش های مربوطه خود در زیر توضیح داده شده اند، اما فکر کنید که
Console
و
Http
دایرکتوری ها یک API در هسته برنامه شما ارائه می دهند. پروتکل HTTP و CLI هر دو مکانیسم هایی برای تعامل با برنامه شما هستند، اما در واقع حاوی منطق برنامه نیستند. به عبارت دیگر، آنها دو راه برای صدور دستورات به برنامه شما هستند. دایرکتوری
Console
شامل تمام دستورات Artisan شما است، در حالی که
Http
دایرکتوری شامل کنترلرها، میان افزارها و درخواست های شما می باشد.
بسیاری از کلاس های دایرکتوری را
app
می توان توسط Artisan از طریق دستورات تولید کرد. برای بررسی دستورات موجود،php artisan list make
دستور را در ترمینال خود اجرا کنید.
دایرکتوری پخش
فهرست
Broadcasting
شامل تمام کلاس های کانال پخش برای برنامه شما است. این کلاس ها با استفاده از
make:channel
دستور تولید می شوند. این دایرکتوری به طور پیش فرض وجود ندارد، اما زمانی که اولین کانال خود را ایجاد کنید برای شما ایجاد می شود. برای کسب اطلاعات بیشتر درباره کانالها، مستندات مربوط به
پخش رویداد
را بررسی کنید .
فهرست راهنمای کنسول
دایرکتوری
Console
شامل تمام دستورات Artisan سفارشی برای برنامه شما است. این دستورات ممکن است با استفاده از دستور تولید شوند
make:command
.
فهرست رویدادها
این دایرکتوری به صورت پیش فرض وجود ندارد، اما با دستورات
event:generate
و
make:event
Artisan برای شما ایجاد می شود. دایرکتوری
کلاس های رویداد را
Events
در خود جای می دهد
. ممکن است از رویدادها برای هشدار دادن به سایر بخشهای برنامه شما مبنی بر وقوع یک عمل خاص استفاده شود که انعطافپذیری و جداسازی زیادی را فراهم میکند.
فهرست استثناها
دایرکتوری
Exceptions
شامل کنترل کننده استثنای برنامه شما است و همچنین مکان مناسبی برای قرار دادن هر گونه استثنایی است که توسط برنامه شما ایجاد شده است. اگر میخواهید نحوه ثبت یا ارائه استثناهای خود را سفارشی کنید، باید
Handler
کلاس را در این فهرست تغییر دهید.
دایرکتوری Http
دایرکتوری
Http
شامل کنترلرها، میان افزارها و درخواست های فرم شما است. تقریباً تمام منطق رسیدگی به درخواست هایی که وارد برنامه شما می شوند در این دایرکتوری قرار می گیرند.
فهرست مشاغل
این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای
make:job
دستور Artisan برای شما ایجاد می شود. دایرکتوری
مشاغل قابل صف
Jobs
برای درخواست شما را در خود جای می دهد
. مشاغل ممکن است توسط برنامه شما در صف قرار گیرند یا به طور همزمان در چرخه عمر درخواست فعلی اجرا شوند. کارهایی که به صورت همزمان در طول درخواست جاری اجرا می شوند، گاهی اوقات به عنوان "فرمان" نامیده می شوند زیرا آنها اجرای الگوی
فرمان
هستند .
فهرست شنوندگان
این دایرکتوری به طور پیش فرض وجود ندارد، اما اگر دستورات
event:generate
یا
make:listener
Artisan را اجرا کنید برای شما ایجاد می شود. دایرکتوری
Listeners
شامل کلاس هایی است که
رویدادهای
شما را مدیریت می کنند . شنوندگان رویداد یک نمونه رویداد را دریافت می کنند و در پاسخ به رویدادی که اخراج می شود، منطق را انجام می دهند. برای مثال، یک
UserRegistered
رویداد ممکن است توسط شنونده مدیریت شود
SendWelcomeEmail
.
فهرست پست الکترونیکی
این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای
make:mail
دستور Artisan برای شما ایجاد می شود. فهرست
Mail
شامل تمام
کلاس های شماست که نشان دهنده ایمیل های
ارسال شده توسط برنامه شما هستند. اشیاء نامه به شما این امکان را می دهند که تمام منطق ساخت یک ایمیل را در یک کلاس ساده و منفرد که ممکن است با استفاده از این
Mail::send
روش ارسال شود، کپسوله کنید.
دایرکتوری مدل ها
دایرکتوری
Models
شامل تمام
کلاس های مدل Eloquent
شما است . ORM Eloquent همراه با لاراول یک پیاده سازی ActiveRecord زیبا و ساده برای کار با پایگاه داده شما ارائه می دهد. هر جدول پایگاه داده یک "مدل" مربوطه دارد که برای تعامل با آن جدول استفاده می شود. مدلها به شما امکان میدهند دادههای جداول خود را جستجو کنید و همچنین رکوردهای جدیدی را در جدول وارد کنید.
فهرست اعلان ها
این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای
make:notification
دستور Artisan برای شما ایجاد می شود. فهرست
Notifications
شامل تمام
اعلانهای
"معامله" است که توسط برنامه شما ارسال میشود، مانند اعلانهای ساده درباره رویدادهایی که در برنامه شما اتفاق میافتد. ویژگی اعلان لاراول ارسال اعلانها را از طریق انواع درایورها مانند ایمیل، اسلک، پیامک یا ذخیره شده در پایگاه داده خلاصه میکند.
فهرست سیاست ها
این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای
make:policy
دستور Artisan برای شما ایجاد می شود. دایرکتوری
Policies
شامل
کلاس های سیاست مجوز
برای برنامه شما است. خط مشی ها برای تعیین اینکه آیا کاربر می تواند یک عمل معین را در برابر یک منبع انجام دهد یا خیر استفاده می شود.
فهرست ارائه دهندگان
فهرست
Providers
شامل همه
ارائه دهندگان خدمات
برای برنامه شما است. ارائه دهندگان خدمات با اتصال سرویس ها در کانتینر سرویس، ثبت رویدادها یا انجام هر کار دیگری برای آماده سازی برنامه شما برای درخواست های دریافتی، برنامه شما را بوت می کنند.
در یک برنامه جدید لاراول، این دایرکتوری از قبل حاوی چندین ارائه دهنده خواهد بود. در صورت نیاز می توانید ارائه دهندگان خود را به این فهرست اضافه کنید.
دایرکتوری قوانین
این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای
make:rule
دستور Artisan برای شما ایجاد می شود. دایرکتوری
Rules
حاوی اشیاء قانون اعتبارسنجی سفارشی برای برنامه شما است. قوانین برای کپسوله کردن منطق اعتبارسنجی پیچیده در یک شی ساده استفاده می شود. برای اطلاعات بیشتر،
اسناد اعتبار سنجی را
بررسی کنید
.