نسخه:

ساختار دایرکتوری

معرفی

ساختار برنامه پیش فرض لاراول برای ارائه یک نقطه شروع عالی برای برنامه های بزرگ و کوچک در نظر گرفته شده است. اما شما آزاد هستید که برنامه خود را هر طور که دوست دارید سازماندهی کنید. لاراول تقریباً هیچ محدودیتی برای مکان هر کلاس خاص اعمال نمی کند - تا زمانی که Composer بتواند کلاس را به طور خودکار بارگذاری کند.

دایرکتوری مدل ها کجاست؟

هنگام شروع کار با لاراول، بسیاری از توسعه دهندگان با نبود دایرکتوری سردرگم می شوند models . با این حال، فقدان چنین دایرکتوری عمدی است. ما کلمه "مدل ها" را مبهم می دانیم زیرا برای افراد مختلف به معنای چیزهای مختلف است. برخی از توسعه دهندگان از "مدل" یک برنامه به عنوان کل کل منطق تجاری آن استفاده می کنند، در حالی که برخی دیگر به "مدل ها" به عنوان کلاس هایی اشاره می کنند که با یک پایگاه داده رابطه ای تعامل دارند.

به همین دلیل، ما مدل‌های Eloquent را به‌طور پیش‌فرض در فهرست قرار می‌دهیم app و به توسعه‌دهنده اجازه می‌دهیم در صورت تمایل آنها را در جای دیگری قرار دهیم.

دایرکتوری ریشه

فهرست برنامه

دایرکتوری app حاوی کد اصلی برنامه شما است. به زودی این فهرست را با جزئیات بیشتری بررسی خواهیم کرد. با این حال، تقریباً تمام کلاس های برنامه شما در این دایرکتوری خواهند بود.

دایرکتوری بوت استرپ

دایرکتوری bootstrap حاوی app.php فایلی است که چارچوب را بوت استرپ می کند. این دایرکتوری همچنین یک cache دایرکتوری را در خود جای داده است که حاوی فایل های فریمورک تولید شده برای بهینه سازی عملکرد مانند فایل های کش مسیر و خدمات است.

دایرکتوری پیکربندی

دایرکتوری config ، همانطور که از نام آن پیداست، حاوی تمام فایل های پیکربندی برنامه شما است. خواندن تمام این فایل ها و آشنایی با تمام گزینه های موجود ایده خوبی است.

دایرکتوری پایگاه داده

دایرکتوری database شامل مهاجرت های پایگاه داده، کارخانه های مدل و دانه های شما است. در صورت تمایل، می توانید از این دایرکتوری برای نگهداری پایگاه داده SQLite نیز استفاده کنید.

فهرست عمومی

دایرکتوری public حاوی index.php فایلی است که نقطه ورود همه درخواست هایی است که وارد برنامه شما می شوند و بارگذاری خودکار را پیکربندی می کند. این فهرست دارایی های شما مانند تصاویر، جاوا اسکریپت و CSS را نیز در خود جای می دهد.

فهرست منابع

فهرست resources شامل نماهای شما و همچنین دارایی های خام و کامپایل نشده شما مانند LESS، SASS یا جاوا اسکریپت است. این فهرست همچنین تمامی فایل های زبان شما را در خود جای می دهد.

فهرست مسیرها

فهرست routes شامل تمام تعاریف مسیر برای برنامه شما است. به طور پیش فرض، چندین فایل مسیر با لاراول گنجانده شده است : web.php , api.php و . console.php channels.php

این web.php فایل حاوی مسیرهایی است که RouteServiceProvider در web گروه میان‌افزار قرار می‌گیرد که وضعیت جلسه، حفاظت CSRF و رمزگذاری کوکی را فراهم می‌کند. اگر برنامه شما یک API بدون حالت و RESTful ارائه نمی دهد، به احتمال زیاد همه مسیرهای شما در فایل تعریف می شوند web.php .

این api.php فایل حاوی مسیرهایی است که RouteServiceProvider در api گروه میان افزار قرار می گیرد که محدودیت نرخ را فراهم می کند. این مسیرها بدون حالت در نظر گرفته شده‌اند، بنابراین درخواست‌هایی که از طریق این مسیرها وارد برنامه می‌شوند، از طریق توکن‌ها احراز هویت می‌شوند و به وضعیت نشست دسترسی نخواهند داشت.

فایل console.php جایی است که می‌توانید تمام دستورات کنسول مبتنی بر Closure را تعریف کنید. هر بسته به یک نمونه دستوری متصل است که به یک رویکرد ساده برای تعامل با روش‌های IO هر فرمان اجازه می‌دهد. اگرچه این فایل مسیرهای HTTP را تعریف نمی کند، نقاط ورودی (مسیرها) مبتنی بر کنسول را به برنامه شما تعریف می کند.

این channels.php فایل جایی است که می توانید تمام کانال های پخش رویداد را که برنامه شما پشتیبانی می کند ثبت کنید.

فهرست ذخیره سازی

دایرکتوری storage شامل قالب های Blade کامپایل شده، جلسات مبتنی بر فایل، کش فایل ها و سایر فایل های تولید شده توسط فریم ورک است. این دایرکتوری به app , framework و logs دایرکتوری ها تفکیک شده است. دایرکتوری app ممکن است برای ذخیره فایل های تولید شده توسط برنامه شما استفاده شود. دایرکتوری framework برای ذخیره فایل‌ها و کش‌های ایجاد شده از چارچوب استفاده می‌شود. در نهایت، logs دایرکتوری حاوی فایل های گزارش برنامه شما است.

دایرکتوری storage/app/public ممکن است برای ذخیره فایل های تولید شده توسط کاربر، مانند آواتارهای نمایه، که باید برای عموم قابل دسترسی باشد، استفاده شود. شما باید یک پیوند نمادین ایجاد کنید که در public/storage آن به این دایرکتوری اشاره می کند. می توانید با استفاده از php artisan storage:link دستور پیوند را ایجاد کنید.

دایرکتوری تست ها

فهرست tests شامل تست های خودکار شماست. یک نمونه تست PHPUnit خارج از جعبه ارائه شده است. هر کلاس آزمایشی باید با کلمه پسوند باشد Test . می توانید تست های خود را با استفاده از دستورات phpunit یا اجرا کنید php vendor/bin/phpunit .

فهرست فروشنده

دایرکتوری حاوی وابستگی های Composer vendor شما است .

فهرست برنامه

اکثر برنامه های شما در app دایرکتوری قرار دارند. به طور پیش‌فرض، این فهرست در زیر فضای نام قرار دارد App و توسط Composer با استفاده از استاندارد بارگیری خودکار PSR-4 بارگیری می‌شود .

دایرکتوری app شامل انواع دایرکتوری های اضافی مانند Console ،، Http و Providers . Console و Http دایرکتوری ها را به عنوان یک API در هسته برنامه شما در نظر بگیرید . پروتکل HTTP و CLI هر دو مکانیسم هایی برای تعامل با برنامه شما هستند، اما در واقع حاوی منطق برنامه نیستند. به عبارت دیگر، آنها دو راه برای صدور دستورات به برنامه شما هستند. دایرکتوری Console شامل تمام دستورات Artisan شما است، در حالی که Http دایرکتوری شامل کنترلرها، میان افزارها و درخواست های شما می باشد.

app با استفاده از make دستورات Artisan برای تولید کلاس ها، دایرکتوری های متنوع دیگری در داخل دایرکتوری ایجاد می شود . بنابراین، برای مثال، app/Jobs دایرکتوری وجود نخواهد داشت تا زمانی که make:job دستور Artisan را برای ایجاد یک کلاس شغلی اجرا کنید.

بسیاری از کلاس های دایرکتوری را app می توان توسط Artisan از طریق دستورات تولید کرد. برای بررسی دستورات موجود، php artisan list make دستور را در ترمینال خود اجرا کنید.

دایرکتوری پخش

فهرست Broadcasting شامل تمام کلاس های کانال پخش برای برنامه شما است. این کلاس ها با استفاده از make:channel دستور تولید می شوند. این دایرکتوری به طور پیش فرض وجود ندارد، اما زمانی که اولین کانال خود را ایجاد کنید برای شما ایجاد می شود. برای کسب اطلاعات بیشتر درباره کانال‌ها، مستندات مربوط به پخش رویداد را بررسی کنید .

فهرست راهنمای کنسول

دایرکتوری Console شامل تمام دستورات Artisan سفارشی برای برنامه شما است. این دستورات ممکن است با استفاده از دستور تولید شوند make:command . این دایرکتوری همچنین هسته کنسول شما را در خود جای داده است، جایی که دستورات Artisan سفارشی شما ثبت می شود و وظایف برنامه ریزی شده شما تعریف می شود.

فهرست رویدادها

این دایرکتوری به صورت پیش فرض وجود ندارد، اما با دستورات 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 روش ارسال شود، کپسوله کنید.

فهرست اعلان ها

این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای make:notification دستور Artisan برای شما ایجاد می شود. فهرست Notifications شامل تمام اعلان‌های "معامله" است که توسط برنامه شما ارسال می‌شود، مانند اعلان‌های ساده درباره رویدادهایی که در برنامه شما اتفاق می‌افتد. اعلان لاراول شامل چکیده هایی است که اعلان ها را از طریق درایورهای مختلف مانند ایمیل، اسلک، اس ام اس یا ذخیره شده در پایگاه داده ارسال می کند.

فهرست سیاست ها

این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای make:policy دستور Artisan برای شما ایجاد می شود. دایرکتوری Policies شامل کلاس های سیاست مجوز برای برنامه شما است. خط مشی ها برای تعیین اینکه آیا کاربر می تواند یک عمل معین را در برابر یک منبع انجام دهد یا خیر استفاده می شود. برای اطلاعات بیشتر، اسناد مجوز را بررسی کنید .

فهرست ارائه دهندگان

فهرست Providers شامل همه ارائه دهندگان خدمات برای برنامه شما است. ارائه دهندگان خدمات با اتصال سرویس ها در کانتینر سرویس، ثبت رویدادها یا انجام هر کار دیگری برای آماده سازی برنامه شما برای درخواست های دریافتی، برنامه شما را بوت می کنند.

در یک برنامه جدید لاراول، این دایرکتوری از قبل حاوی چندین ارائه دهنده خواهد بود. در صورت نیاز می توانید ارائه دهندگان خود را به این فهرست اضافه کنید.

دایرکتوری قوانین

این دایرکتوری به صورت پیش فرض وجود ندارد، اما در صورت اجرای make:rule دستور Artisan برای شما ایجاد می شود. دایرکتوری Rules حاوی اشیاء قانون اعتبارسنجی سفارشی برای برنامه شما است. قوانین برای کپسوله کردن منطق اعتبارسنجی پیچیده در یک شی ساده استفاده می شود. برای اطلاعات بیشتر، اسناد اعتبار سنجی را بررسی کنید .