লারাভেল ফাইল বিন্যাস কি? কেন লারাভেল ফাইল ফোল্ডার সম্পর্কে যথযথ জ্ঞান রাখা প্রয়োজন?
লারাভেল ফাইল বিন্যাস
লারাভেল ইনস্টল করার সর্ব প্রথম কাজ হলো লারাভেল ফাইল বিন্যাস সম্পর্কে যথাযথ ধারনা রাখা । কোন ফাইল কোন ফোল্ডারের মধ্যে রয়েছে আবার কোন ফাইলে কি লিখতে হবে এইগুলো সম্পর্কে ভালো ধারনা না থাকলে কাজের গতি অনেক কমে যায়।
মনে করুন, আপনি একটি ডাটাবেজ ফাইল এডিট করতে চাচ্ছেন। কিন্তু আপনি ঠিক জানেন না যে ডাটাবেজ এর ফাইল গুলো কোথায় থাকে বা ফাইল টার নাম কি। সঠিক ধারন না থাকার কারনে ফাইলটি খুজে বের করতেই অনেকটা সময় নস্ট হয়ে যাবে। তাই দ্রুত কাজ করার জন্য লারাভেল ফাইল-ফোল্ডার নিয়ে যথাযথ জ্ঞান অর্জন করা জরুরি।
ডিরেক্টরি স্ট্রাকচার
ছোট বড় সব ধরনের অ্যাপ্লিকেশন তৈরি করার জন্য ডিফল্টভাবে লারাভেল ফাইল ফোল্ডার সাজানো হয়েছে। প্রয়োজন হলে নিজেদের মত করে কাস্টমাইজ করে নেয়া যাবে। এক্ষেত্রে লারাভেল এর পক্ষ থেকে কোন রেস্ট্রিকশন নাই। একজন ডেভেলপার চাইলে তার নিজের পছন্দমত ফাইল নেম এবং ফোল্ডার স্ট্রাকচার সাজিয়ে নিতে পারেন।
লারাভেলে একটি ফ্রেশ প্রোজেক্ট তৈরি করার পর Root ডিরেক্টরিতে ফাইল ফোল্ডার গুলো যেভাবে থাকে।
app,
bootstrap,
config,
database,
lang,
public,
resources,
routes,
storage,
tests,
vendor
app
এই ফোল্ডারের ভেতরে অ্যাপ্লিকেশনটির core কোডগুলো থাকে। এই ডিরেক্টরিতে আবার কিছু সাব ডিরেক্টরি রয়েছে। যেগুলোকে app ডিরেক্টরি বলা হয়। যেমনঃ
Broadcasting
Console
Events
Exceptions
Http
Jobs
Listeners
Mail
Models
Notifications
Policies
Provides
Rules
ডিফল্টভাবে Console, Exceptions, Http, Models, Provides ফোল্ডার গুলো তৈরি হয়। বাকি ফোল্ডারগুলো আর্টিসান কমান্ড এর মাধ্যমে প্রয়োজন অনুযায়ী তৈরি করে কাজ করা হয়। php artisan make:job myJob কোডটি লিখে এন্টার প্রেস করলে Jobs ফোল্ডারের ভেতরে myJob নামে একটি ফাইল তৈরি হয়ে যায়। আবার Http ফোল্ডারের মধ্যে Controllers and Middlewares ফোল্ডার থাকে যেখানে কন্ট্রোলার এবং মিডলওয়্যার ফাইল গুলো থাকে।
Bootstrap
এই Bootstrap ডিরেক্টরিতে cache ফোল্ডারের ভেতরে এপ্লিকেশনের cache ফাইলগুলো থাকে। যেকোন ওয়েব অ্যাপ্লিকেশনের লোডিং টাইম কমানোর জন্য এই cache ফাইলগুলোর ভুমিকা অপরিসীম।
config
config ডিরেক্টরিতে এপ্লিকেশনটিকে কনফিগার করার জন্য প্রয়োজনীয় ফাইল গুলো থাকে। যেমন ডাটাবেজ কনফিগার করা, ইমেইল কনফিগার করা ইত্যাদি। এই ডিরেক্টরির কিছু ফাইল নিম্নে দেওয়া হলোঃ
app.php, auth.php, cache.php, database.php, hashing.php, logging.php, mail.php, queue.php, services.php, session.php, view.php
database
database ফোল্ডারের মধ্যে ডিফল্টভাবেfactories, migrations, seeders ফোল্ডার গুলো থাকে। অ্যাপ্লিকেশনের ডাটাবেজ মাইগ্রেশন এবং সীড ফাইল গুলাও এই database ফোল্ডারে থাকে। ডাটাবেজ টেবিল ক্রিয়েট করা এবং ডাটাবেজ টেবিলের রো এবং কলাম সম্পর্কিত যাবতীয় পরিবর্তন এই মাইগ্রেশনস ফোল্ডার থেকে করা হয়।
lang
ওয়েব অ্যাপ্লিকেশনে যত বেশি ভাষার সাপোর্ট দেয়া যাবে তত বেশি ভিজিটর অ্যাপ্লিকেশনটিকে ব্রাউজ করবে। যদি অ্যাপ্লিকেশনে ৫টি ভাষার সাপোর্ট প্রয়োজন হয় তাহলে সেই ৫টি ভাষার সকল ফাইল এই lang ফোল্ডারে রাখতে হবে। এই ফোল্ডারের কিছু ফাইল নিম্নে দেওয়া হলো-auth.php, pagination.php, passwords.php, validation.php
public
public ফোল্ডারের মধ্যে .htaccess, index.php, robots.txt গুরুত্বপূর্ন ফাইলগুলো থাকে।
resources
resources ফোল্ডারের মধ্যে একটি প্রজেক্টের css, js, images ফোল্ডারসহ views নামে ফোল্ডার রয়েছে। প্রজেক্টের সকল ছবি images ফোল্ডারে, সকল সিএসএস ফাইল গুলো resources ফোল্ডারে, সকল জাভাস্ক্রিপ্ট ফাইল গুলো js ফোল্ডারে রাখা হয়। তাছাড়া প্রজেক্টের যাবতীয় সকল ফ্রন্ট এন্ড এর ফাইল গুলো views ফোল্ডারে রাখা হয়।
routes
routesফোল্ডারের মধ্যে ডিফল্ট ভাবে নিচের ফাইলগুলো দেওয়া থাকে। একটি urlতৈরি করার জন্য web.php ফাইলে একটি রাউট ডিফাইন করা হয়। যেমনঃ api.php, channels.php, console.php, web.php
Storage
এই folder এ আপনার application এর সব compiled Blade templates, file based sessions, file caches, এবং framework generated অন্যান্য file গুলো থাকবে। এই folder টি তিনটি folder যথাক্রমে app, framework, এবং logs folder এ বিভক্ত। app folder আপনার application generated ফাইল গুলো থাকবে, framework folder আপনার framework generated ফাইল গুলো থাকবে এবং logs folder আপনার application এর লগ ফাইল গুলো থাকবে।
tests
এই folder এ আপনার application এর test ফাইল গুলা থাকে , যেমনঃ PHPUnit ফাইল।
Vendor
এই folder এ সকল Composer dependency ফাইলগুলা থাকে। যেমনঃ bin, composer, laravel, symfony ইত্যাদি।
আগামি পর্বে .env ফাইল সম্পর্কে লেখার চেষ্টা করবো। সবাই ভালো থাকবেন! ধন্যবাদ!