Laravel-এর ডিরেক্টরি স্ট্রাকচার একটি ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য খুবই সুসংগঠিত এবং কাঠামোবদ্ধ। এখানে Laravel 11-এর ডিরেক্টরি স্ট্রাকচারের মূল অংশগুলো উল্লেখ করা হলো:
অর্থাৎ Laravel-এর ডিরেক্টরি স্ট্রাকচারটি একটি সংগঠিত এবং কার্যকরী ফরম্যাটে ডিজাইন করা হয়েছে, যা ডেভেলপারদের জন্য কাজ করা সহজ করে। এই স্ট্রাকচারটি বিভিন্ন ফাইল এবং ফোল্ডারকে তাদের ফাংশন অনুযায়ী শ্রেণীবদ্ধ করে, যাতে অ্যাপ্লিকেশনের বিভিন্ন অংশ সহজে পরিচালনা করা যায়।
এখানে Laravel অ্যাপ্লিকেশন তৈরি করার পর যে ডিরেক্টরি স্ট্রাকচারটি পাওয়া যায় তা নিচে উল্লেখ করা হলো:
app/
Console/
Exceptions/
Http/
Controllers/
Middleware/
Models/
Policies/
bootstrap/
cache/
config/
database/
factories/
migrations/
seeders/
public/
resources/
css/
js/
views/
routes/
storage/
app/
framework/
logs/
tests/
vendor/
.env
.artisan
composer.json
package.json
phpunit.xml
README.md
your-laravel-app/
│
├── app/ # অ্যাপ্লিকেশনের লজিক
├── bootstrap/ # অ্যাপ্লিকেশন শুরু করার ফাইল
├── config/ # কনফিগারেশন ফাইল
├── database/ # ডাটাবেসের মাইগ্রেশন, সিডার, ফ্যাক্টরি
├── public/ # পাবলিক ফাইল (CSS, JS, Images)
├── resources/ # ভিউ ফাইল, ভাষা ফাইল, অন্যান্য রিসোর্স
├── routes/ # রাউট কনফিগারেশন
├── storage/ # লগ, ক্যাশে, এবং অস্থায়ী ফাইল
├── tests/ # টেস্ট কেস
└── vendor/ # Composer প্যাকেজ
এই ফোল্ডারটি অ্যাপ্লিকেশনের মূল লজিক ধারণ করে। এখানে মডেল, কন্ট্রোলার, মিডলওয়্যার এবং অন্যান্য ক্লাস থাকে।
এটি অ্যাপ্লিকেশন শুরু করার জন্য প্রয়োজনীয় ফাইল ধারণ করে। app.php ফাইলটি এখানে থাকে, যা অ্যাপ্লিকেশনকে লোড এবং কনফিগার করতে ব্যবহৃত হয়।
অ্যাপ্লিকেশনের কনফিগারেশন ফাইলগুলি এখানে থাকে, যা বিভিন্ন সেটিংস এবং কনফিগারেশন মান ধারণ করে।
এই ফোল্ডারে ডাটাবেস মাইগ্রেশন, সিডার এবং ফ্যাক্টরি ফাইল থাকে। মাইগ্রেশনগুলো ডাটাবেস স্কিমা পরিবর্তন করার জন্য ব্যবহৃত হয়।
এটি অ্যাপ্লিকেশনের পাবলিক ফাইলগুলি ধারণ করে, যেমন CSS, JavaScript, এবং ইমেজ। এটি লারাভেল অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট।
এখানে ভিউ ফাইল, ভাষা ফাইল এবং অন্যান্য রিসোর্স থাকে। Blade টেমপ্লেট এবং স্থানীয়করণ(Localization) ফাইলগুলোও এই ফোল্ডারে রয়েছে।
অ্যাপ্লিকেশনের রাউট কনফিগারেশন ফাইলগুলো এখানে থাকে। প্রতিটি রাউট অ্যাপ্লিকেশনের URL এবং তার সাথে সম্পর্কিত কন্ট্রোলার সংযুক্ত করে।
লগ, ক্যাশে, সেশন এবং অস্থায়ী ফাইল সংরক্ষণ করে। এটি তিনটি সাব-ডিরেক্টরি ধারণ করে:
অ্যাপ্লিকেশনের টেস্ট কেস সংরক্ষণ করা হয়। এখানে PHPUnit টেস্ট ফাইলগুলো থাকে।
Composer দ্বারা ইনস্টল করা সমস্ত প্যাকেজ সংরক্ষণ করে। এটি আপনার অ্যাপ্লিকেশনের জন্য ব্যবহৃত তৃতীয় পক্ষের লাইব্রেরি ধারণ করে।
Laravel-এর ডিরেক্টরি স্ট্রাকচারটি একটি শক্তিশালী এবং কার্যকরী ভিত্তি প্রদান করে, যা ডেভেলপারদের জন্য কোড সংরক্ষণ, পরিচালনা এবং উন্নয়ন প্রক্রিয়াকে সহজ করে। এই সংগঠিত স্ট্রাকচারটি বড় এবং জটিল অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে এবং অ্যাপ্লিকেশনের বিভিন্ন অংশকে পৃথক করে রাখে, যাতে কোডটি আরও রক্ষণাবেক্ষণযোগ্য হয়।
Laravel 11-এর App Directory হল অ্যাপ্লিকেশনের প্রধান অংশ, যেখানে সমস্ত ব্যবসায়িক(Business) লজিক, কন্ট্রোলার, মডেল এবং অন্যান্য গুরুত্বপূর্ণ উপাদান রাখা হয়। এই ডিরেক্টরির বিভিন্ন অংশ এবং তাদের উদ্দেশ্য সম্পর্কে বিস্তারিত জানানো হলো:
app/
├── Console/
├── Exceptions/
├── Http/
│ ├── Controllers/
│ ├── Middleware/
│ └── Requests/
├── Models/
├── Policies/
└── Providers/
এই ফোল্ডারটি Laravel-এর Artisan কমান্ড তৈরি করার জন্য ব্যবহৃত হয়। আপনি যদি কাস্টম Artisan কমান্ড তৈরি করতে চান, তবে আপনার কোড এখানে থাকবে।
উদাহরণ:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class ExampleCommand extends Command
{
protected $signature = 'example:command';
protected $description = 'Example command description';
public function handle()
{
// Command logic
}
}
এখানে কাস্টম এক্সেপশন হ্যান্ডলার এবং অন্যান্য ত্রুটির ক্লাস থাকে। Laravel-এর Handler ক্লাসটি এখানে থাকে, যা অ্যাপ্লিকেশনকে ত্রুটিগুলি পরিচালনা করতে সাহায্য করে।
উদাহরণ:
namespace App\Exceptions;
use Exception;
class CustomException extends Exception
{
// Custom logic for handling exceptions
}
এই ডিরেক্টরির মধ্যে HTTP সম্পর্কিত কোডগুলো সংরক্ষিত হয়:
Controllers/: এখানে অ্যাপ্লিকেশনের কন্ট্রোলার ক্লাসগুলো থাকে। কন্ট্রোলারগুলি রিকুয়েস্ট এবং রেসপন্স পরিচালনা করে এবং মডেল ও ভিউ-এর মধ্যে সমন্বয় সাধন করে।
উদাহরণ:
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
}
Middleware/: মিডলওয়্যার হলো অ্যাপ্লিকেশনের রিকুয়েস্ট এবং রেসপন্সের মধ্যে একটি প্রক্রিয়া। এটি সাধারণত রিকুয়েস্টের আগে বা পরে কিছু নির্দিষ্ট কাজ সম্পাদন করে।
উদাহরণ:
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age < 18) {
return redirect('home');
}
return $next($request);
}
}
Requests/: এই ফোল্ডারে কাস্টম রিকুয়েস্ট ভ্যালিডেশন ক্লাসগুলো থাকে, যা ইনপুট ডাটা যাচাই করার জন্য ব্যবহৃত হয়।
উদাহরণ:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
];
}
}
মডেলগুলি ডাটাবেস টেবিলের প্রতিনিধিত্ব করে এবং সেই টেবিলের সাথে সম্পর্কিত কার্যক্রম (CRUD) পরিচালনা করে। মডেলগুলি ডেটা ম্যানিপুলেশন এবং ব্যবসায়িক(Business) লজিক পরিচালনা করার জন্য ব্যবহৃত হয়।
উদাহরণ:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
পলিসি ক্লাসগুলো অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়। এটি নির্ধারণ করে যে ইউজার একটি নির্দিষ্ট রিসোর্সে প্রবেশের অনুমতি পাবে কিনা।
উদাহরণ:
namespace App\Policies;
use App\Models\User;
use App\Models\Post;
class PostPolicy
{
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
}
সার্ভিস প্রোভাইডারগুলি অ্যাপ্লিকেশন শুরু করার সময় বিভিন্ন সার্ভিস এবং কনফিগারেশন রেজিস্টার করে। এটি Laravel অ্যাপ্লিকেশনটির হৃদয়(herat), যেখানে সার্ভিসগুলোকে প্যাকেজের মাধ্যমে এবং কাস্টম কনফিগারেশন দিয়ে রেজিস্টার করা হয়।
উদাহরণ:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Register services
}
public function boot()
{
// Bootstrap services
}
}
Laravel 11-এর App Directory হলো অ্যাপ্লিকেশনের কেন্দ্রবিন্দু, যেখানে ব্যবসায়িক লজিক, ডাটাবেস মডেল, কন্ট্রোলার, মিডলওয়্যার এবং পলিসি ক্লাসগুলো রাখা হয়। এই সংগঠিত স্ট্রাকচার ডেভেলপারদের জন্য অ্যাপ্লিকেশন তৈরি এবং রক্ষণাবেক্ষণ সহজ করে, এবং এটি বড় এবং জটিল অ্যাপ্লিকেশনগুলোর জন্য একটি পরিচ্ছন্ন ও সুসংহত কোডবেস নিশ্চিত করে।
Laravel 11-এর App Directory-তে কিছু ডিরেক্টরি ডিফল্টভাবে উপস্থিত থাকে না, তবে Artisan কমান্ডের মাধ্যমে সেগুলো তৈরি করা যায়। নিচে সেই ডিরেক্টরিগুলোর তালিকা এবং কীভাবে Artisan কমান্ড ব্যবহার করে সেগুলো তৈরি করা যায়, তা নিয়ে বিস্তারিত আলোচনা করা হলো।
Laravel 11-এ Models ডিরেক্টরি ডিফল্টভাবে থাকে না। আপনি Artisan কমান্ড চালিয়ে মডেল তৈরি করলে এটি স্বয়ংক্রিয়ভাবে তৈরি হয়।
কমান্ড:
php artisan make:model Models/Userএটি app/Models/ ডিরেক্টরির অধীনে User.php নামে একটি মডেল তৈরি করবে। Models ডিরেক্টরি যদি না থাকে, তাহলে এটি তৈরি হবে।
Laravel-এর কাস্টম Artisan কমান্ড তৈরি করার জন্য Console ডিরেক্টরি ব্যবহার করা হয়, যা ডিফল্টভাবে থাকে না।
কমান্ড:
php artisan make:command ExampleCommandএটি app/Console/Commands/ ডিরেক্টরির অধীনে ExampleCommand.php নামে একটি নতুন কনসোল কমান্ড তৈরি করবে। যদি Console/ এবং Commands/ ডিরেক্টরি না থাকে, তাহলে Laravel এটি তৈরি করে নেবে।
Laravel Queue-এর জন্য Jobs ক্লাস তৈরি করা হয়, যা Artisan কমান্ডের মাধ্যমে তৈরি করা যেতে পারে।
কমান্ড:
php artisan make:job SendEmailJobএটি app/Jobs/ ডিরেক্টরির অধীনে SendEmailJob.php নামে একটি জব তৈরি করবে। Jobs ডিরেক্টরি না থাকলে Laravel এটি স্বয়ংক্রিয়ভাবে তৈরি করবে।
Laravel-এর ইভেন্ট মেকানিজম পরিচালনার জন্য Events ডিরেক্টরি ব্যবহার করা হয়, যা ডিফল্টভাবে থাকে না। Artisan কমান্ড দিয়ে এটি তৈরি করা যেতে পারে।
কমান্ড:
php artisan make:event UserRegisteredএটি app/Events/ ডিরেক্টরির অধীনে UserRegistered.php নামে একটি ইভেন্ট ক্লাস তৈরি করবে। যদি Events ডিরেক্টরি না থাকে, তাহলে এটি তৈরি করা হবে।
Laravel ইভেন্ট লিসেনারের জন্য Listeners ডিরেক্টরি ব্যবহার করা হয়, যা Artisan কমান্ডের মাধ্যমে তৈরি করা যায়।
কমান্ড:
php artisan make:listener SendWelcomeEmailএটি app/Listeners/ ডিরেক্টরির অধীনে SendWelcomeEmail.php নামে একটি লিসেনার তৈরি করবে। Listeners ডিরেক্টরি যদি না থাকে, তাহলে এটি তৈরি হবে।
Laravel-এ পলিসি ক্লাস তৈরি করার জন্য Policies ডিরেক্টরি ব্যবহার করা হয়, যা ডিফল্টভাবে থাকে না।
কমান্ড:
php artisan make:policy UserPolicyএটি app/Policies/ ডিরেক্টরির অধীনে UserPolicy.php তৈরি করবে। Policies ডিরেক্টরি যদি না থাকে, তাহলে এটি স্বয়ংক্রিয়ভাবে তৈরি হবে।
Laravel-এর মডেল ইভেন্টগুলো পরিচালনার জন্য Observers ডিরেক্টরি ব্যবহার করা হয়। এটি Artisan কমান্ড দিয়ে তৈরি করা যায়।
কমান্ড:
php artisan make:observer UserObserver --model=Userএটি app/Observers/ ডিরেক্টরির অধীনে UserObserver.php নামে একটি অবজারভার তৈরি করবে। Observers ডিরেক্টরি না থাকলে এটি তৈরি হবে।
Laravel মেইল ক্লাসের জন্য Mail ডিরেক্টরি তৈরি করা যায়, যা ডিফল্টভাবে থাকে না।
কমান্ড:
php artisan make:mail WelcomeMailএটি app/Mail/ ডিরেক্টরির অধীনে WelcomeMail.php নামে একটি মেইল ক্লাস তৈরি করবে। Mail ডিরেক্টরি না থাকলে এটি তৈরি হবে।
Laravel-এ নোটিফিকেশন ক্লাস তৈরি করার জন্য Notifications ডিরেক্টরি ব্যবহার করা হয়, যা Artisan কমান্ড দিয়ে তৈরি করা যেতে পারে।
কমান্ড:
php artisan make:notification InvoicePaidএটি app/Notifications/ ডিরেক্টরির অধীনে InvoicePaid.php নামে একটি নোটিফিকেশন তৈরি করবে। Notifications ডিরেক্টরি যদি না থাকে, তাহলে এটি তৈরি হবে।
Laravel-এ কাস্টম ভ্যালিডেশন রুল তৈরি করার জন্য Rules ডিরেক্টরি ব্যবহার করা হয়।
কমান্ড:
php artisan make:rule ValidEmailএটি app/Rules/ ডিরেক্টরির অধীনে ValidEmail.php নামে একটি কাস্টম রুল তৈরি করবে। Rules ডিরেক্টরি যদি না থাকে, তাহলে এটি স্বয়ংক্রিয়ভাবে তৈরি হবে।
Laravel 11-এর App Directory-তে বেশ কিছু ডিরেক্টরি ডিফল্টভাবে থাকে না। তবে Artisan কমান্ডের মাধ্যমে এগুলো তৈরি করা যায়। Artisan কমান্ড Laravel ডেভেলপমেন্টকে আরও সুনির্দিষ্ট ও দ্রুততর করে তোলে এবং প্রয়োজন অনুযায়ী স্বয়ংক্রিয়ভাবে ডিরেক্টরি তৈরি করতে সক্ষম।
Laravel 11-এ আরও কিছু ডিরেক্টরি আছে, যেগুলো ডিফল্টভাবে অন্তর্ভুক্ত থাকে না। প্রয়োজন হলে আপনি সেগুলো Artisan কমান্ড ব্যবহার করে তৈরি করতে পারেন। নিচে অতিরিক্ত কিছু ডিরেক্টরির তালিকা দেওয়া হলো, যেগুলো Laravel 11-এ ডিফল্টভাবে থাকে না:
Laravel-এ Repositories প্যাটার্ন ব্যবহৃত হলে, ডেটা অ্যাক্সেস লেয়ার আলাদা করার জন্য এই ডিরেক্টরি তৈরি করা যেতে পারে। এটি ডিফল্টভাবে উপস্থিত থাকে না এবং আপনাকে এটি ম্যানুয়ালি বা Artisan কমান্ড দিয়ে তৈরি করতে হয়।
Services ডিরেক্টরি সাধারণত সার্ভিস ক্লাস বা বিজনেস লজিক সংরক্ষণের জন্য ব্যবহৃত হয়। Laravel ডিফল্টভাবে এই ডিরেক্টরি সরবরাহ করে না, তবে আপনি এটি নিজে তৈরি করতে পারেন।
যদি আপনি বিভিন্ন ক্লাসে পুনঃব্যবহারযোগ্য ফাংশনালিটি তৈরি করতে চান, তাহলে Traits ব্যবহার করা হয়। এই ডিরেক্টরি ডিফল্টভাবে অন্তর্ভুক্ত নয়।
Helpers ডিরেক্টরি সাধারণত সহায়ক ফাংশন সংরক্ষণের জন্য ব্যবহৃত হয়। Laravel এটি ডিফল্টভাবে সরবরাহ করে না। আপনাকে নিজে এটি তৈরি করতে হয়।
যদি আপনি View Composers ব্যবহার করেন, তাহলে এই ডিরেক্টরি তৈরি করা প্রয়োজন। এটি ডিফল্টভাবে অন্তর্ভুক্ত থাকে না।
Contracts ডিরেক্টরি ইন্টারফেস সংরক্ষণের জন্য ব্যবহৃত হয়। এটি সাধারণত ডিপেন্ডেন্সি ইনজেকশন ব্যবহারের সময় গুরুত্বপূর্ণ ভূমিকা পালন করে, তবে Laravel-এ ডিফল্টভাবে উপস্থিত নয়।
ডিফল্টভাবে শুধুমাত্র ইংরেজি ভাষার ফাইল Laravel-এ থাকে। অন্যান্য ভাষার জন্য আলাদা ডিরেক্টরি তৈরি করতে হয়, যেমন resources/lang/bn/ বাংলা ভাষার জন্য।
যদি আপনি Vue.js বা অন্যান্য ফ্রন্টএন্ড ফ্রেমওয়ার্ক ব্যবহার করেন, তবে JavaScript Components সংরক্ষণের জন্য এই ডিরেক্টরি ব্যবহার করা হয়। Laravel ডিফল্টভাবে এটি তৈরি করে না।
যদিও ডিফল্টভাবে Laravel-এ কিছু টেস্ট ডিরেক্টরি থাকে, আপনি নির্দিষ্ট ইউনিট বা ফিচার টেস্টগুলোর জন্য এই ডিরেক্টরিগুলোকে আরও সংগঠিতভাবে তৈরি করতে পারেন।
ফর্ম ভ্যালিডেশনের জন্য Form Request ক্লাস তৈরি করার সময় এটি তৈরি হয়। Laravel-এ ডিফল্টভাবে এটি উপস্থিত থাকে না।
View Models সাধারণত Vue.js বা Blade টেমপ্লেটের সাথে ডেটা ম্যানিপুলেশন এবং উপস্থাপনার জন্য ব্যবহৃত হয়। Laravel-এ ডিফল্টভাবে এটি নেই, তবে আপনি View Model প্যাটার্ন ব্যবহার করলে এটি তৈরি করতে পারেন।
Facades Laravel-এ সরাসরি কনটেইনারে অ্যাক্সেসের একটি উপায়, তবে আপনি যদি কাস্টম Facades তৈরি করতে চান, তাহলে এই ডিরেক্টরি ম্যানুয়ালি বা Artisan কমান্ডের মাধ্যমে তৈরি করতে হবে।
Laravel-এ কিছু ডিফল্ট মিডলওয়্যার থাকে, তবে আপনি কাস্টম Middleware তৈরি করলে এটি app/Http/ ডিরেক্টরির অধীনে তৈরি করতে পারেন।
কমান্ড:
php artisan make:middleware CustomMiddlewareঅ্যাডমিন প্যানেল বা অ্যাডমিন-সংশ্লিষ্ট কাজের জন্য যদি আলাদা কন্ট্রোলার তৈরি করতে হয়, তাহলে এই ডিরেক্টরি ম্যানুয়ালি তৈরি করতে পারেন। Laravel এটি ডিফল্টভাবে সরবরাহ করে না।
API রিসোর্সের জন্য আলাদা কন্ট্রোলার তৈরি করতে চাইলে আপনি API ডিরেক্টরি ম্যানুয়ালি তৈরি করতে পারেন। Laravel এটিকে ডিফল্টভাবে অন্তর্ভুক্ত করে না।
Global Scopes তৈরি করার জন্য Scopes ডিরেক্টরি ব্যবহৃত হয়। ডিফল্টভাবে এই ডিরেক্টরি অন্তর্ভুক্ত নয়, তবে আপনি Artisan কমান্ডের মাধ্যমে এটি তৈরি করতে পারেন।
কমান্ড:
php artisan make:scope CustomScopeLaravel-এ API রিসোর্সের জন্য Resources ক্লাস তৈরি করার সময় এই ডিরেক্টরি তৈরি হয়। ডিফল্টভাবে Laravel-এ এটি থাকে না।
কমান্ড:
php artisan make:resource UserResourceযদি ফর্ম ভ্যালিডেশন বা HTTP অনুরোধগুলোর জন্য আলাদা Traits তৈরি করতে হয়, তবে এই ডিরেক্টরি ম্যানুয়ালি তৈরি করতে হবে। Laravel এটিকে ডিফল্টভাবে অন্তর্ভুক্ত করে না।
আলাদা সার্ভিস ক্লাস তৈরি করার জন্য Services ডিরেক্টরি ব্যবহার করা হয়। এটি সাধারণত অ্যাপ্লিকেশনের বিজনেস লজিক পরিচালনার জন্য ব্যবহৃত হয়, কিন্তু Laravel এটিকে ডিফল্টভাবে তৈরি করে না।
যদি আপনি কাস্টম লগ ফাইল সংরক্ষণের জন্য আলাদা ডিরেক্টরি তৈরি করতে চান, তাহলে এটি ম্যানুয়ালি তৈরি করতে হবে। Laravel কাস্টম লগ ডিরেক্টরি ডিফল্টভাবে অন্তর্ভুক্ত করে না।
ডিফল্টভাবে এই ডিরেক্টরি অন্তর্ভুক্ত থাকে না। আপনাকে ফাইল আপলোডের জন্য পাবলিক ডিরেক্টরি ম্যানুয়ালি তৈরি করতে হতে পারে।
Laravel-এ সাধারণত ফ্রন্টএন্ড সম্পদ ব্যবস্থাপনার জন্য public/css/ এবং public/js/ ডিরেক্টরি ম্যানুয়ালি তৈরি করতে হয়। Laravel ডিফল্টভাবে এগুলো অন্তর্ভুক্ত করে না।
এছাড়াও Laravel 11-এ আরও কিছু ডিরেক্টরি রয়েছে, যেগুলো ডিফল্টভাবে তৈরি হয় না, তবে আপনার প্রয়োজন অনুযায়ী ম্যানুয়ালি বা Artisan কমান্ড দিয়ে সেগুলো তৈরি করা যায়। এগুলো অ্যাপ্লিকেশন স্ট্রাকচার এবং মডুলার ডিজাইনের ওপর নির্ভর করে তৈরি হয়। নিচে আরও কিছু ডিরেক্টরি উল্লেখ করা হলো, যেগুলো ডিফল্টভাবে উপস্থিত থাকে না:
Laravel API ডেভেলপমেন্টের ক্ষেত্রে ডেটা ট্রান্সফরমেশন করার জন্য Transformers ডিরেক্টরি ব্যবহার করা হয়। এটি ডিফল্টভাবে উপস্থিত থাকে না, তবে আপনি এটি API-এর ডেটা ট্রান্সফরম করার প্রয়োজন হলে ম্যানুয়ালি তৈরি করতে পারেন।
যদি আপনি Laravel-এ Pipeline প্যাটার্ন ব্যবহার করেন, তাহলে এই ডিরেক্টরি প্রয়োজন হতে পারে। Pipelines ক্লাসগুলো চেইনড প্রসেসিংয়ে ব্যবহৃত হয়, এবং ডিফল্টভাবে এই ডিরেক্টরি থাকে না।
Repositories প্যাটার্ন ব্যবহার করে Eloquent মডেল পরিচালনা করার জন্য আপনি Repositories/Eloquent ডিরেক্টরি তৈরি করতে পারেন। এটি ডিফল্টভাবে অন্তর্ভুক্ত নয়, তবে উন্নত অ্যাপ্লিকেশন কাঠামোতে ব্যবহৃত হতে পারে।
Interfaces ডিরেক্টরি সাধারণত বিভিন্ন ইন্টারফেস সংরক্ষণ এবং নির্দিষ্ট ডিপেন্ডেন্সি ইনজেকশনের জন্য ব্যবহৃত হয়। এটি Laravel-এ ডিফল্টভাবে থাকে না এবং প্রয়োজন অনুযায়ী ম্যানুয়ালি তৈরি করতে হয়।
মডেল ইভেন্ট অবজারভার তৈরি করার জন্য Observers ডিরেক্টরি ব্যবহার করা হয়। যদিও এটি আগেও উল্লেখ করা হয়েছে, Laravel ডিফল্টভাবে এটি অন্তর্ভুক্ত করে না এবং আপনাকে এটি তৈরি করতে হবে।
Presenters Laravel-এ ভিউ এবং ডেটার মধ্যবর্তী স্তরে ব্যবহৃত হয়। এটি ডিফল্টভাবে অন্তর্ভুক্ত থাকে না এবং ম্যানুয়ালি তৈরি করতে হয়।
Laravel-এ ডেটা ট্রান্সফার করার জন্য DTOs (Data Transfer Objects) তৈরি করা হয়। এটি অ্যাপ্লিকেশনের ভ্যালিডেশন ও ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়, কিন্তু ডিফল্টভাবে এই ডিরেক্টরি থাকে না।
কাস্টম সার্ভিস প্রোভাইডার বা ক্লাসের সাথে bindings ব্যবহারের জন্য Bindings ডিরেক্টরি তৈরি করা যেতে পারে। এটি ডিফল্টভাবে উপস্থিত থাকে না।
Laravel 11-এ সাধারণত factories ব্যবহৃত হয়, তবে seeds ডিরেক্টরি ডিফল্টভাবে থাকে না। তবে আপনি এটি ম্যানুয়ালি তৈরি করতে পারেন ডেটা সিডিংয়ের জন্য।
Laravel ইমেইল টেমপ্লেট ব্যবহারের জন্য আলাদা views/emails/ ডিরেক্টরি তৈরি করা যেতে পারে। এটি ডিফল্টভাবে উপস্থিত থাকে না এবং প্রয়োজন অনুযায়ী ম্যানুয়ালি তৈরি করতে হয়।
Cache ফাইলগুলো সংরক্ষণের জন্য এই ডিরেক্টরি ব্যবহার করা হয়। তবে Laravel-এ এই ডিরেক্টরি ডিফল্টভাবে থাকে না, এবং ক্যাশিং সেটআপের সময় এটি তৈরি করা হয়।
ফাইল আপলোড সংরক্ষণের জন্য public/storage/ ডিরেক্টরি প্রয়োজন হতে পারে, কিন্তু এটি ডিফল্টভাবে অন্তর্ভুক্ত নয়। Laravel-এ এটি লিংক করার জন্য php artisan storage:link কমান্ড ব্যবহার করতে হয়।
Laravel Dusk বা ব্রাউজার টেস্টিং ব্যবহারের সময় Browser ডিরেক্টরি তৈরি করা হয়। এটি ডিফল্টভাবে উপস্থিত নয় এবং Dusk ইনস্টল করলে এটি তৈরি হয়।
Queries ডিরেক্টরি Eloquent Query Object প্যাটার্নের জন্য ব্যবহৃত হতে পারে, যেখানে কাস্টম কুয়েরি লজিককে পুনরায় ব্যবহারযোগ্য এবং সংগঠিত রাখা হয়। এটি ডিফল্টভাবে অন্তর্ভুক্ত থাকে না।
ফর্ম হ্যান্ডলিংয়ের জন্য Laravel-এ আলাদা ফর্ম ক্লাস তৈরি করা হলে Forms ডিরেক্টরি ব্যবহার করা যেতে পারে। এটি সাধারণত বড় অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয় এবং Laravel-এ ডিফল্টভাবে থাকে না।
Laravel-এ Pipeline প্যাটার্ন ব্যবহার করা হলে কাস্টম পিপলাইনের জন্য Pipelines ডিরেক্টরি তৈরি করা হয়। এটি অ্যাপ্লিকেশন লজিককে ধাপে ধাপে প্রসেস করার সুবিধা দেয়। ডিফল্টভাবে Laravel এই ডিরেক্টরি তৈরি করে না।
কিছু সময়ে কাস্টম সার্ভিস কনফিগারেশন পরিচালনার জন্য আপনি services.php ফাইল তৈরি করতে পারেন। যদি একাধিক সার্ভিস কনফিগার করা থাকে, তাহলে আপনি কনফিগ ফোল্ডারে services/ ডিরেক্টরি তৈরি করে প্রতিটি সার্ভিসের জন্য আলাদা কনফিগ ফাইল রাখতে পারেন। এটি Laravel-এর ডিফল্ট স্ট্রাকচারে অন্তর্ভুক্ত নয়।
কাস্টম ভ্যালিডেশন রুল তৈরি করার জন্য আপনি এই ডিরেক্টরি ব্যবহার করতে পারেন। Laravel-এ ডিফল্টভাবে এটি অন্তর্ভুক্ত থাকে না, তবে আপনি কাস্টম রুল তৈরি করলে এটি দরকার হতে পারে।
কমান্ড:
php artisan make:rule CustomRuleLaravel-এ কাস্টম ফিল্টার তৈরি করা হলে Filters ডিরেক্টরি ব্যবহার করা হয়। এটি ডাটাবেজ বা API কুয়েরির ক্ষেত্রে বিশেষভাবে প্রযোজ্য। Laravel-এ এটি ডিফল্টভাবে অন্তর্ভুক্ত নয়।
বড় অ্যাপ্লিকেশনগুলিতে অ্যাডমিন সম্পর্কিত কাস্টম মিডলওয়্যার তৈরি করা হলে, আপনি Middleware/Admin/ ডিরেক্টরি ব্যবহার করতে পারেন। ডিফল্টভাবে এটি অন্তর্ভুক্ত নয়।
User বা Frontend User সংক্রান্ত মিডলওয়্যার পরিচালনার জন্য আলাদা ডিরেক্টরি দরকার হতে পারে, যেখানে কাস্টম লজিক প্রয়োগ করা হয়। ডিফল্টভাবে এই ডিরেক্টরি Laravel-এ থাকে না।
প্রজেক্টে ইমেজ ফাইল সংরক্ষণের জন্য public/images/ ডিরেক্টরি তৈরি করতে হয়। Laravel এই ডিরেক্টরি ডিফল্টভাবে সরবরাহ করে না, তবে ইমেজ বা অন্যান্য মিডিয়া সংরক্ষণের জন্য এটি তৈরি করা যেতে পারে।
স্ট্যাটিক অ্যাসেট (CSS, JS, ফন্ট) সংরক্ষণের জন্য assets/ ডিরেক্টরি তৈরি করা যেতে পারে। Laravel এটি ডিফল্টভাবে অন্তর্ভুক্ত করে না, তবে আপনি ফ্রন্টএন্ড ফাইলগুলি রাখতে এটি তৈরি করতে পারেন।
Laravel-এ ডেটাবেস বা ফাইল সিস্টেমের ব্যাকআপ ফাইল সংরক্ষণের জন্য backups/ ডিরেক্টরি ব্যবহার করা যেতে পারে। এটি ডিফল্টভাবে তৈরি হয় না, তবে ব্যাকআপ ব্যবস্থাপনার জন্য প্রয়োজন হতে পারে।
কোনো ফাইল বা ডেটা সাময়িকভাবে সংরক্ষণ করার জন্য temp/ ডিরেক্টরি ব্যবহার করা যেতে পারে। এটি Laravel-এর ডিফল্ট স্ট্রাকচারে থাকে না এবং প্রয়োজন হলে এটি ম্যানুয়ালি তৈরি করতে হয়।
ডাটাবেজ স্কিমার ব্লুপ্রিন্ট সংরক্ষণের জন্য blueprints/ ডিরেক্টরি তৈরি করা যেতে পারে। এটি সাধারণত বড় অ্যাপ্লিকেশনে ব্যবহৃত হয়, কিন্তু Laravel ডিফল্টভাবে এটি তৈরি করে না।
SVG ফাইলগুলো সংরক্ষণের জন্য resources/svg/ ডিরেক্টরি তৈরি করা যায়। Laravel-এ এটি ডিফল্টভাবে অন্তর্ভুক্ত নয়, তবে ফ্রন্টএন্ডে কাজ করার সময় এটি দরকার হতে পারে।
API রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য আলাদা Requests/API/ ডিরেক্টরি তৈরি করা যেতে পারে। বড় API ভিত্তিক অ্যাপ্লিকেশনগুলিতে এই ধরনের আলাদা ডিরেক্টরি কাঠামো ব্যবহার করা হয়। Laravel ডিফল্টভাবে এটি অন্তর্ভুক্ত করে না।
Laravel 11-এ বেশ কিছু ডিরেক্টরি ডিফল্টভাবে উপস্থিত থাকে না, তবে অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী আপনি এসব ডিরেক্টরি ম্যানুয়ালি বা Artisan কমান্ড ব্যবহার করে তৈরি করতে পারেন। Laravel-এর এই ফ্লেক্সিবল ডিরেক্টরি স্ট্রাকচার উন্নত অ্যাপ্লিকেশন গঠন ও মডুলারাইজেশনকে সহজ করে তোলে।
আপনি আমাকে যেকোনো প্রশ্ন করতে পারেন, যেমনঃ
Are you sure to start over?