Skip to content

Latest commit

 

History

History
159 lines (103 loc) · 22.8 KB

structure.md

File metadata and controls

159 lines (103 loc) · 22.8 KB

Directory Structure

-Introduction

Introduction

Laravel ရဲ့ ဖိုဒါခွဲထားတဲ့ပုံစံဟာ application အကြီးအသေးအားလုံးကို လွယ်လွယ်ကူကူ အစပျိုးလို့ရအောင် ရည်ရွယ်ပါတယ်။ မူလ ပုံစံကိုမကြိုက်ဘူးဆိုရင်လဲ စိတ်ကြိုက်ပြုပြင်ပြောင်းလဲနိုင် ပါတယ်။ Composer က autoload လုပ်ပေးနိုင်တဲ့အတွက် Laravel ရဲ့ class အားလုံးနီးပါးကို ဘယ်နေရာမှာ ရှိမှရမယ်ဆိုတာမျိုး ကန့်သတ်မထားပါဘူး။

Where Is The Models Directory?

Laravel နဲ့အခုမှစရေးမဲ့ Developer အများစုဟာ models directory မရှိတာကိုဇဝေဇဝါဖြစ်နိုင်ပါတယ်။ ဘာကြောင့်မထည့်ထားတာလဲဆိုတော့ အဲ့ဒီ "models" ဆိုတဲ့အသုံးအနှုန်းဟာ developer များစုအတွက် မတူညီတဲ့ အဓိပ္ပါယ်တွေ ရှိနေလို့ဖြစ်ပါတယ်။ အချို့ developser တွေအတွက် application ရဲ့ "models" ဆိုတာ အဲ့ဒီ application ရဲ့ business logic ကြီးတစ်ခုလုံးကို ရည်ရွယ်ကြသလို အချို့တွေအတွက်တော့ "models" ဆိုတဲ့အသုံးအနှု န်းဟာ relational database table တွေကိုချိတ်ဆက်ဆောင်ရွက်ပေးမဲ့ class တွေအဖြစ် သတ်မှတ်ကြလို့ပဲဖြစ်ပါတယ်။

ဒါကြောင့်မို့လို့ Eloquent model တွေကို default အနေနဲ့ app အောက်မှာထားပြီး developer ကို စိတ်ကြိုက်နေရာပြောင်းရွေ့ခွင့်ပေးထားပါတယ်။

The Root Directory

The App Directory

app directory ထဲမှာတော့ သင်ပြုလုပ်မဲ့ application အတွက်လိုအပ်မဲ့ အဓိက code တွေပါဝင်ပါတယ်။ သင့် application အတွက်အသုံးပြုမဲ့ class တွေအားလုံးနီးပါးဟာ ဒီ directory အောက်မှာရေးရပါလိမ့်မယ်။ ဒီ directory နဲ့ပတ်သက်ပြီး နောက်ပိုင်းမှာပိုပြီး အသေးစိတ်ရှင်းပြထားပါတယ်။

The Bootstrap Directory

bootstrap directory ထဲမှာတော့ framework စတင်ချိန်မှာပြုလုပ်မဲ့ autoloading တွေ bootstraping ပြုလုပ်တဲ့ကိစ္စတွေပါဝင်ပါတယ်။ application performance အတွက် framework က အလိုအလျောက်ပြုလုပ်တဲ့ route တို့ services တို့ရဲ့ cache file တွေကိုလဲ ဒီ directory အောက်မှာပဲ cache directory တစ်ခုပြုလုပ်ပီး သိမ်းဆည်းထားပါတယ်။

The Config Directory

config directory ဆိုတဲ့အတိုင်း application ရဲ့ configuration တွေပါဝင်တဲ့ directory ပါ။ ဒီ directory ထဲမှာပါတဲ့ ဖိုင်တွေကို ဖတ်ပြီး application အတွက် အသုံးပြုနိုင်တဲ့ options တွေနဲ့ လွယ်လွယ်ကူကူပဲ ရင်းနှီးသွားစေနိုင်ပါတယ်။

The Database Directory

database directory ဟာ database migration ဖိုင်တွေ၊ seeder ဖိုင်တွေအတွက်နေရာပါ။ အကယ်၍ SQLite ကိုအသုံးပြုမယ်ဆိုရင်လဲ ဒီ directory အောက်မှာပဲ SQLite database ဖိုင်တွေကို သိမ်းဆည်းနိုင်ပါတယ်။

The Public Directory

public directory အောက်မှာ index.php ဖိုင်ရှိပါတယ်။ အဲ့ဒီဖိုင်းဟာ သင့် application ကို ဝင်ရောက်လာမဲ့ request အားလုံးရဲ့ ဝင်ပေါက်ပါပဲ။ ဒါ့အပြင် ပုံတွေ၊ JavaScript ဖိုင်တွေနဲ့ CSS ဖိုင်တွေကိုလည်း ဒီ directory အောက်မှာပဲ သိမ်းဆည်းပါတယ်။

The Resources Directory

resources directory ထဲမှာတော့ view ဖိုင်တွေရယ်၊ compiled မလုပ်ရသေးတဲ့ LESS, SASS, Javascript ဖိုင်တွေပါဝင်ပါတယ်။ ဒါ့အပြင် language ဖိုင်တွေအားလုံးကိုလဲ ဒီထဲမှာပဲသိမ်းဆည်းပါတယ်။

The Routes Directory

routes directory ထဲမှာ application ရဲ့ route definitions အားလုံးရှိပါမယ်။ ပုံမှန်အနေနဲ့တော့ web.phpapi.php ရယ် console.php ရယ် သုံးဖိုင်ရှိပါတယ်။

web.php ဖိုင်ထဲမှာပါတဲ့ routes တွေကို RouteServiceProvider ကနေပီးတော့ session state, CSRF protection နဲ့ cookie encryption တွေလုပ်ဆောင်ပေးမဲ့ web middleware group ထဲမှာနေရချပေးပါတယ်။ အကယ်၍ သင့် application ဟာ stateless၊ RESTful API ဖြစ်ဖို့မရည်ရွယ်ဘူးဆိုရင် သင့် routes တွေအားလုံးကို web.php ဖိုင်ထဲမှာရေးရပါလိမ့်မယ်။

api.php ဖိုင်ထဲမှာပါတဲ့ routes တွေကိုတော့ RouteServiceProvider ကနေ ကန်သတ်ချက်တွေရှိတဲ့ api middleware group ထဲမှာနေရာချပါတယ်။ ဘာကန့်သတ်ချက်တွေရှိလဲဆိုတော့ အဲ့ဒီ middleware အောက်မှာရှိတဲ့ routes တွေဟာ stateless ဖြစ်ပြီး session သုံးလို့မရပါဘူး။ ဒါကြောင့်မို့ ဒီ routes တွေကနေ လုပ်တဲ့ requests တွေဟာ tokens ကနေတဆင့် authentication လုပ်ဖို့လိုအပ်ပါတယ်။

The console.php file is where you may define all of your Closure based console commands. Each Closure is bound to a command instance allowing a simple approach to interacting with each command's IO methods. Even though this file does not define HTTP routes, it defines console based entry points (routes) into your application.

The Storage Directory

storate directory ထဲမှာတော့ compiled လုပ်ပီးသား Blade templates ဖိုင်တွေ၊ file based sessions တွေ၊ file caches တွေနဲ့ framework ကနေပြုလုပ်တဲ့ files တွေအားလုံးရှိပါတယ်။ သူအောက်မှာမှ appframework နဲ့ logs ဆိုပြီး နောက်ထပ် directory သုံးခုထပ်ခွဲပါတယ်။ app directory ကတော့ သင့် application ကနေ generate လုပ်လိုက်တဲ့ ဖိုင်တွေကို ထားပါတယ်။ framework directory ထဲမှာတော့ framework ကနေ generate လုပ်တဲ့ဖိုင်တွေရယ် cache ဖိုင်တွေရယ်ကို သိမ်းပါတယ်။ နောက်ဆုံးတစ်ခုဖြစ်တဲ့ logs directory ထဲမှာတော့ သင့် application ရဲ့ log ဖိုင်တွေရှိပါမယ်။

storage/app/public directory အောက်မှာတော့ profile avatars လိုမျိုး user-generated ဖိုင်တွေထားပါတယ်။ အဲ့ဒီဖိုင်တွေဟာ public ကနေယူသုံးလို့ရတဲ့ ဖိုင်မျိုးဖြစ်သင့်ပါတယ်။ ပြီးတော့ public/storage directory နေ ဒီ storage/app/public directory ကို symbolic link ပြုလုပ်ထားသင့်ပါတယ်။ လွယ်လွယ်ကူကူပဲ php artisan storage:link command နဲ့ အဲ့ဒီ link ကို ပြုလုပ်နိုင်ပါတယ်။

The Tests Directory

The tests directory contains your automated tests. An example PHPUnit is provided out of the box. Each test class should be suffixed with the word Test. You may run your tests using the phpunit or php vendor/bin/phpunit commands.

The Vendor Directory

Composer dependencies တွေအားလုံး vendors directory ထဲမှာရှိပါတယ်။

The App Directory

သင့် application အတွက် အဓိကအရေးကြီးတဲ့ အရာတွေက app directory အောက်မှာရှိပါတယ်။ ပုံမှန်အနေနဲ့ ဒီ directory ဟာ App ဆိုတဲ့ namespace အောက်မှာရှိပြီး Composer ကနေ PSR-4 autoloading standard ကိုသုံးပြီး autoload လုပ်ပေးထားပါတယ်။

app directory အောက်မှာ 'ConsoleHttp နဲ့ Providers တို့လို နောက်ထပ် sub-directory တွေအမျိုးမျိုးရှိပါသေးတယ်။ Think of the Console and Http directories as providing an API into the core of your application. HTTP protocol နဲ့ CLI နှစ်ခုစလုံးကို သင့် application အတွက် အလုပ်လုပ်ပေးမဲ့ ယန္တယားအဖြစ်သတ်မှတ်နိုင်ပါတယ်။ ဒါပေမဲ့ တကယ် application logic ကမပါဝင်ပါဘူး။ နောက်ပုံစံတစ်မျိုးနဲ့ ပြောရရင် သူတို့ဟာ application ကို ခိုင်းစေမဲ့ နည်းလမ်းနှစ်ခုအဖြစ် သတ်မှတ်နိုင်ပါတယ်။ Console directory ထဲမှာတော့ သင့်ရဲ့ Artisan commands တွေပါဝင်မှာဖြစ်ပြီး၊ Http directory ထဲမှာတော့ သင့်ရဲ့ controllers တွေ middleware တွေ နဲ့ requests တွေပါဝင်မှာဖြစ်ပါတယ်။

ကျန်တဲ့ directory တွေကတော့ make Artisan command တွေကို သုံးပြီး classes တွေ generate လုပ်တော့မှ အလိုအလျောက် ပြုလုပ်သွားမှာပါ။ ဥပမာ app/Jobs directory make:job Artisan command နဲ့ job class create မလုပ်မချင်း ရှိအုံးမှာမဟုတ်ပါဘူး။

{tip} app directory အောက်မှာရှိတဲ့ classes တော်တော်များများဟာ Aritsan commands တွေအသုံးပြုပြီး generate ပြုလုပ်နိုင်ပါတယ်။ အသုံးပြုနိုင်တဲ့ commands တွေကိုကြည့်ဖို့အတွက် terminal ကနေ php artisan list make command ကိုအသုံးပြုပြီး ကြည့်ရှုနိုင်ပါတယ်။

The Console Directory

သင့် application အတွက်လိုပြုလုပ်မဲ့ custom Artisan commands တွေဟာ Console directory ထဲမှာရှိပါမယ်။ အဲ့ဒီ custom commands တွေကို make:command ကိုအသုံးပြုပြီး generate ပြုလုပ်နိုင်ပါတယ်။ သင့်ရဲ့ custom Artisan commands တွေကို register လုပ်ဖို့ရယ်၊ သင့်ရဲ့ scheduled tasks တွေသတ်မှတ်ဖို့အတွက် console kernal ဟာလဲ ဒီ directory အောက်မှာရှိပါမယ်။

The Events Directory

Events directory ဟာ event:generate နဲ့ event:make Artisan command တွေအသုံးပြုပြီးမှပေါ်လာမှာပါ။ ထုံးစံအတိုင်းပဲ event classes တွေသိမ်းထားတဲ့ directory ပဲဖြစ်ပါတယ် ။ Events ဆိုတာ သူ့ကို အသုံးပြုပြီး သတ်မှတ်ထားတဲ့ action တွေဖြစ်ပေါ်လာတဲ့အချိန်မှာ သင့် application ရဲ့ကျန်တဲ့အစိတ်အပိုင်းတွေကို လိုသလို ခိုင်းစေနိုင်ဖို့ အသုံးပြုပါတယ်။ flexiblility နဲ့ decoupling တို့အတွက် အရမ်းအကျိုးရှိနိုင်ပါတယ်။

The Exceptions Directory

Exceptions directory ထဲမှာ သင့် application ရဲ့ exception handler ရှိပြီးတော့ application ရဲ့ exceptions တွေထားဖို့ နေရာဖြစ်ပါတယ်။ အကယ်၍ သင့်အနေနဲ့ သင့် exceptions တွေ ဘယ်လိုပုံစံနဲ့ logged သို့မဟုတ် rendered လုပ်စေလိုရင် ဒီ directory ထဲမှာရှိတဲ့ Handler ကို modify ပြန်ပြုလုပ်သင့်ပါတယ်။

The Http Directory

Http directory ထဲမှာတော့ သင့်ရဲ့ contollers တွေ၊ middleware တွေနဲ့ form request လုပ်တဲ့ အရာတွေပါဝင်ပါတယ်။ သင့် application ကို ဝင်ရောက်လာမဲ့ requests တွေကို ထိန်းချုပ်မဲ့ logic အားလုံးနီးပါးဟာ ဒီ direcoty ထဲမှာပဲလုပ်ဆောင်ပါတယ်။

The Jobs Directory

ဒီ directory ဟာ default အနေနဲ့တော့မပါဝင်ပါဘူး။ ဒါပေမဲ့ make:job Artisan command နဲ့ job တစ်ခုပြုလုပ်လိုက်ရင် အလိုအလျောက် ပြုလုပ်ပေးပါလိမ့်မယ်။ Jobs directory ဟာ သင့် application အတွက် queueable jobs တွေကိုသိမ်းဆည်းမဲ့ directory ပါ။ Jobs တွေဟာ လက်ရှိ request lifecycle အတွင်းမှာ synchronously အလုပ်လုပ်နေတာဖြစ်နိုင်သလို သင့် application ကနေ queued လုပ်ထားတာလဲ ဖြစ်နိုင်ပါတယ်။Synchronously အလုပ်လိုက်လုပ်နေတဲ့ jobs တွေဟာ တစ်ခါတစ်ရံမှာ command pattern ကို implements လုပ်ထားတဲ့ "commands" တွေကို ရည်ညွှန်းတာလဲ ဖြစ်နိုင်ပါတယ်။

The Listeners Directory

ဒီ directory ဟာလဲ default အနေနဲ့တော့မပါဝင်ပါဘူး။ ထုံးစံအတိုင်းပဲ event:generate or make:listener Artisan commands တွေအသုံးပြုတော့မှ အလိုအလျောက်ပြုလုပ်ပေးပါလိမ့်မယ်။ Listeners directory မှာ သင့် events တွေကို ထိန်းချုပ်ပေးမဲ့ classes တွေပါဝင်ပါတယ်။ Event listeners ဟာ event ဖြစ်စဥ်တွေကိုလက်ခံပြီး event fire လုပ်လိုက်တဲ့အခါမှာ သတ်မှတ်ထားတဲ့ logic ကို repsponse နဲ့အတူပြုလုပ်ပေးပါတယ်။ ဥပမာ - UserRegistered event ကို SendWelcomeEmail listener ကနေထိန်းချုပ်တဲ့ပုံစံပါ။

The Mail Directory

make:mail Artisan command ကိုအသုံးပြုတော့မှ ဒီ directory ဟာပေါ်လာမှ ဖြစ်ပါတယ်။ Mail directory ထဲမှတော့ သင့် application ကနေ ပို့မဲ့ emails class တွေရှိပါမယ်။ Mail objects ဟာ email တစ်ခုကို ပြုလုပ်ဖို့အတွက် လိုအပ်မဲ့ logic တွေကို အရှင်းလင်းဆုံးအသုံးပြုနိုင်အောင် ဆောင်ရွက်ပေးပါတယ်။ mail ပို့ဖို့အတွက် အသုံးပြုတဲ့ Mail::send ဆိုတဲ့ method ဟာ ရှင်းလင်းလွယ်ကူတာကို တွေရမှာပါ။

The Notifications Directory

make:notification Artisan command ကိုသုံးပြီးတော့ notification တွေပြုလုပ်ခါမှ ဒီ directory ပေါ်လာမှာပါ။ သင့် application ကနေပို့လိုက်တဲ့ "transactional" notifications တွေအားလုံး ဒီ Notifications directory ထဲမှာရှိပါမယ်။ ဘယ်လို notification တွေလဲဆိုတော့ သင့် application ထဲမှာဖြစ်ပေါ်သွားတ့ဲ events တွေန့ဲသက်ဆိုင်တ့ဲ notifications ပုံစံမျိုးတွေပါ။ Laravel's notification features ဟာ email, Slack, SMS ဒါမှမဟုတ် database ထဲကိုသိမ်းလိုက်တာပဲဖြစ်ဖြစ် အမျိုးမျိုးသော drivers တွေကိုအသုံးပြုပြီး notifications တွေပို့လို့ရအောင်ပြုလုပ်ပေးထားခြင်းပဲ ဖြစ်ပါတယ်။

The Policies Directory

ဒီ directory ဟာလည်း default အနေန့ဲမပါဝင်ပါဘူး။ make:policy Artisan command န့ဲ policy ပြုလုပ်တော့မှ ပြုလုပ်ပေးမှာဖြစ်ပါတယ်။ သင့် application အတွက် လိုအပ်တဲ့ authorization policy classes တွေကို ဒီ directory ထဲမှာသိမ်းဆည်းပါတယ်။ User တစ်ယောက်ဟာ သူပြုလုပ်နိုင်တဲ့ အတိုင်းအတာအတိုင်း ပေးထားတဲ့ action ကိုပြုလုပ်နိုင်သလား ဆုံးဖြတ်ဖို့အတွက် policies တွေကိုအသုံးပြုပါတယ်။

The Providers Directory

Providers ထဲမှာ သင့် application ရဲ့ service providers တွေအားလုံးပါဝင်ပါတယ်။ Service providers bootstrap your application by binding services in the service container, registering events, or performing any other tasks to prepare your application for incoming requests. Fresh Laravel framework မှာဒီ directory ဟာပါပီးသားဖြစ်ပါတယ်။ သင့် ကိုယ်ပိုင် providers တွေထည့်ဖို့လိုအပ်တယ်ဆိုရင်လဲ ထပ်ထည့်နိုင်ပါတယ်။