Yii ফ্রেমওয়ার্কের প্রজেক্ট ডিরেক্টরি স্ট্রাকচার একটি নির্দিষ্ট গঠন অনুসরণ করে থাকে, যা কোডের সংগঠন এবং মেইনটেনেন্স সহজ করে। Yii 2 এবং Yii 3-এর ডিরেক্টরি স্ট্রাকচার কিছুটা ভিন্ন, কারণ Yii 3 এখনও উন্নয়ন পর্যায়ে রয়েছে এবং এটি Yii 2 থেকে কিছুটা আলাদা। নিচে Yii 2 এবং Yii 3 এর ডিরেক্টরি স্ট্রাকচারের বিস্তারিত ব্যাখ্যা দেওয়া হলো।
Yii 2 ডিরেক্টরি স্ট্রাকচার
Yii 2-এ দুটি প্রধান অ্যাপ্লিকেশন টেমপ্লেট রয়েছে: Basic Application Template এবং Advanced Application Template। এগুলোর ডিরেক্টরি স্ট্রাকচার আলাদা।
১. Basic Application Template
Basic Application Template ছোট এবং একক অ্যাপ্লিকেশন প্রকল্পের জন্য উপযুক্ত। এর ডিরেক্টরি স্ট্রাকচার খুবই সরল।
basic/
├── assets/ # ওয়েব অ্যাসেটস (CSS, JS)
├── commands/ # কাস্টম কনসোল কমান্ড
├── config/ # কনফিগারেশন ফাইল
│ ├── web.php # ওয়েব কনফিগ
│ └── console.php # কনসোল কনফিগ
├── controllers/ # কন্ট্রোলার ক্লাস
├── models/ # মডেল ক্লাস
├── runtime/ # রানটাইম ফাইল (ক্যাশ, লগ)
├── views/ # ভিউ ফাইল (HTML, PHP টেমপ্লেট)
├── web/ # পাবলিক ডিরেক্টরি (Index ফাইল, রিসোর্স)
│ └── index.php # অ্যাপ্লিকেশনের ইনডেক্স ফাইল
└── yii # Yii কনসোল স্ক্রিপ্ট
- assets/: CSS, JavaScript ফাইল সংরক্ষণ করা হয়।
- commands/: কাস্টম কনসোল কমান্ড স্টোর করা হয়।
- config/: অ্যাপ্লিকেশনের কনফিগ ফাইল যেমন
web.php,console.phpএখানে থাকে। - controllers/: কন্ট্রোলার ক্লাসগুলো সংরক্ষিত থাকে।
- models/: মডেল ক্লাস যেখানে ডেটাবেসের সাথে যোগাযোগের জন্য কোড লেখা হয়।
- runtime/: রানটাইম ডেটা, ক্যাশ এবং লগ ফাইল এখানে থাকে।
- views/: ইউজার ইন্টারফেস (UI) ভিউ টেমপ্লেট সংরক্ষণ করা হয়।
- web/: পাবলিক ডিরেক্টরি যেখানে অ্যাসেটস, রিসোর্স এবং ওয়েব অ্যাপ্লিকেশন চলে।
২. Advanced Application Template
Advanced Application Template বড় এবং স্কেলেবল অ্যাপ্লিকেশন প্রোজেক্টের জন্য উপযুক্ত। এটি ফ্রন্টএন্ড এবং ব্যাকএন্ড অ্যাপ্লিকেশন দুটি আলাদাভাবে সাজানো থাকে।
advanced/
├── backend/ # ব্যাকএন্ড অ্যাপ্লিকেশন
│ ├── assets/ # ওয়েব অ্যাসেটস (CSS, JS)
│ ├── commands/ # কাস্টম কনসোল কমান্ড
│ ├── config/ # কনফিগারেশন ফাইল
│ ├── controllers/ # কন্ট্রোলার ক্লাস
│ ├── models/ # মডেল ক্লাস
│ ├── runtime/ # রানটাইম ফাইল
│ ├── views/ # ভিউ ফাইল
│ └── web/ # পাবলিক ডিরেক্টরি
├── common/ # কমন কোড (ব্যাকএন্ড ও ফ্রন্টএন্ড শেয়ার করা কোড)
│ ├── config/ # সাধারণ কনফিগ ফাইল
│ ├── models/ # কমন মডেল
│ └── components/ # কমন কম্পোনেন্টস
├── frontend/ # ফ্রন্টএন্ড অ্যাপ্লিকেশন
│ ├── assets/ # ওয়েব অ্যাসেটস (CSS, JS)
│ ├── commands/ # কাস্টম কনসোল কমান্ড
│ ├── config/ # কনফিগ ফাইল
│ ├── controllers/ # কন্ট্রোলার ক্লাস
│ ├── models/ # মডেল ক্লাস
│ ├── runtime/ # রানটাইম ফাইল
│ ├── views/ # ভিউ ফাইল
│ └── web/ # পাবলিক ডিরেক্টরি
└── yii # Yii কনসোল স্ক্রিপ্ট
- backend/: ব্যাকএন্ড অ্যাপ্লিকেশনের সমস্ত ফাইল এই ডিরেক্টরিতে থাকে।
- common/: ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয় অ্যাপ্লিকেশনের মধ্যে শেয়ার করা কোড এবং কনফিগ ফাইল।
- frontend/: ফ্রন্টএন্ড অ্যাপ্লিকেশন সংক্রান্ত সমস্ত ফাইল এখানে থাকে।
Yii 3 ডিরেক্টরি স্ট্রাকচার
Yii 3 একটি নতুন ভার্সন, যা এখনও উন্নয়ন পর্যায়ে রয়েছে এবং কিছু ডিরেক্টরি কাঠামো Yii 2 থেকে আলাদা। Yii 3-এ মূল কাঠামো অনেকটা মডিউলার এবং মডিউল ভিত্তিক। Yii 3-এর ডিরেক্টরি স্ট্রাকচার কিছুটা পরিবর্তিত, তবে প্রাথমিকভাবে এটি ছোট এবং মডিউলার অ্যাপ্লিকেশনের জন্য উপযোগী।
myapp/
├── assets/ # ওয়েব অ্যাসেটস (CSS, JS)
├── config/ # কনফিগারেশন ফাইল
├── modules/ # মডিউলস (এটি কোডকে আলাদা আলাদা মডিউলে ভাগ করে)
├── public/ # পাবলিক ডিরেক্টরি
│ └── index.php # অ্যাপ্লিকেশনের ইনডেক্স ফাইল
├── runtime/ # রানটাইম ডেটা
├── src/ # সোর্স কোড
│ ├── controllers/ # কন্ট্রোলার ক্লাস
│ ├── models/ # মডেল ক্লাস
│ └── views/ # ভিউ ফাইল
└── yii # Yii কনসোল স্ক্রিপ্ট
- assets/: ওয়েব অ্যাসেটস (CSS, JS) সংরক্ষিত হয়।
- config/: অ্যাপ্লিকেশনের কনফিগ ফাইল।
- modules/: মডিউল ভিত্তিক সংগঠন, যেখানে বিভিন্ন ফিচারের জন্য আলাদা মডিউল থাকে।
- public/: পাবলিক ডিরেক্টরি, যেখানে অ্যাসেটস এবং রিসোর্স সরবরাহ করা হয়।
- runtime/: রানটাইম ফাইল যেমন লগ এবং ক্যাশ।
- src/: সোর্স কোড যেখানে কন্ট্রোলার, মডেল এবং ভিউ থাকে।
সারাংশ
Yii 2 এবং Yii 3-এর ডিরেক্টরি স্ট্রাকচার কিছুটা ভিন্ন, তবে উভয় ফ্রেমওয়ার্কেই স্পষ্টভাবে অ্যাপ্লিকেশন কোড আলাদা করা হয় এবং প্রতিটি উপাদান (কন্ট্রোলার, মডেল, ভিউ) আলাদা ডিরেক্টরিতে থাকে। Yii 2-এ দুইটি মূল টেমপ্লেট (Basic এবং Advanced) রয়েছে, যেখানে Advanced Template বড় অ্যাপ্লিকেশন তৈরির জন্য উপযুক্ত। Yii 3-এর স্ট্রাকচার আরও মডিউলার এবং আধুনিক, যা নতুন পদ্ধতিতে কোডের সংগঠন এবং মেইনটেনেন্স সহজ করে।