Yii ফ্রেমওয়ার্ক একটি শক্তিশালী এবং দ্রুত PHP ফ্রেমওয়ার্ক, যা MVC (Model-View-Controller) আর্কিটেকচার ব্যবহার করে। MVC একটি জনপ্রিয় ডিজাইন প্যাটার্ন যা সফটওয়্যার ডেভেলপমেন্টে কোডের সংগঠন, পুনরায় ব্যবহারযোগ্যতা, এবং টেস্টিং সহজ করে। Yii ফ্রেমওয়ার্কে MVC প্যাটার্ন খুবই কার্যকরভাবে ইমপ্লিমেন্ট করা হয়েছে।
MVC প্যাটার্নে Model ডেটা এবং লজিক পরিচালনা করে, View ইউজারের ইন্টারফেস তৈরি করে, এবং Controller ইউজারের ইনপুট নিয়ে অ্যাপ্লিকেশনের লজিক কার্যকর করে।
১. Model (মডেল)
Model সাধারণত ডেটা বা ডেটাবেসের সাথে কাজ করে। Yii 2 তে মডেল ক্লাসগুলি সাধারণত yii\db\ActiveRecord থেকে বিস্তৃত হয়, যা ডেটাবেস টেবিলের সাথে সরাসরি সম্পর্কিত। মডেল ক্লাসে সাধারণত ডেটা ভ্যালিডেশন, অ্যাক্সেসর, এবং মিউটেটর থাকে।
মডেল তৈরি করা:
Yii 2-তে মডেল তৈরি করতে আপনাকে একটি ক্লাস তৈরি করতে হয় যা yii\db\ActiveRecord থেকে বিস্তৃত হয়। উদাহরণস্বরূপ, একটি Post মডেল তৈরি করা:
namespace app\models;
use yii\db\ActiveRecord;
class Post extends ActiveRecord
{
// ডেটাবেস টেবিলের নামের সাথে সম্পর্কিত
public static function tableName()
{
return 'post';
}
// মডেলের ভ্যালিডেশন রুলস
public function rules()
{
return [
[['title', 'content'], 'required'],
['title', 'string', 'max' => 255],
];
}
}
tableName()মেথডটি ডেটাবেস টেবিলের নাম রিটার্ন করে।rules()মেথডটি ডেটা ভ্যালিডেশন রুলস নির্ধারণ করে।
২. View (ভিউ)
View ইউজার ইন্টারফেসের (UI) অংশ তৈরি করে, যা ইউজারকে অ্যাপ্লিকেশনের তথ্য দেখায়। Yii 2 তে ভিউ ফাইলগুলি views ডিরেক্টরিতে রাখা হয় এবং এগুলি সাধারণত PHP টেমপ্লেট হয়।
ভিউ তৈরি করা:
Yii 2-তে কন্ট্রোলার অ্যাকশন থেকে ভিউ রেন্ডার করা হয়। উদাহরণস্বরূপ, PostController এর index অ্যাকশনে একটি ভিউ রেন্ডার করা হচ্ছে:
namespace app\controllers;
use yii\web\Controller;
use app\models\Post;
class PostController extends Controller
{
public function actionIndex()
{
$posts = Post::find()->all(); // সমস্ত পোস্ট রেকর্ড নিয়ে আসা
return $this->render('index', ['posts' => $posts]); // ভিউ রেন্ডার করা
}
}
এখানে render() মেথডটি views/post/index.php ফাইলটি রেন্ডার করবে এবং $posts ডেটাকে ভিউতে পাঠাবে।
ভিউ ফাইল উদাহরণ:
views/post/index.php ফাইলটি হতে পারে:
<?php foreach ($posts as $post): ?>
<h2><?= $post->title ?></h2>
<p><?= $post->content ?></p>
<?php endforeach; ?>
- এখানে আমরা
$postsঅ্যারে থেকে পোস্টের তথ্য প্রিন্ট করছি।
৩. Controller (কন্ট্রোলার)
Controller ইউজারের ইনপুট নিয়ে মডেল ও ভিউয়ের মধ্যে সম্পর্ক স্থাপন করে। কন্ট্রোলার অ্যাকশনগুলি বিভিন্ন ইভেন্টের জন্য রেসপন্স করে এবং ডেটা ভ্যালিডেশন ও লজিক বাস্তবায়ন করে।
কন্ট্রোলার তৈরি করা:
Yii 2 তে কন্ট্রোলার ক্লাস সাধারণত yii\web\Controller থেকে বিস্তৃত হয়। উদাহরণস্বরূপ, PostController:
namespace app\controllers;
use yii\web\Controller;
use app\models\Post;
class PostController extends Controller
{
// Index অ্যাকশন - সমস্ত পোস্ট প্রদর্শন
public function actionIndex()
{
$posts = Post::find()->all();
return $this->render('index', ['posts' => $posts]);
}
// Create অ্যাকশন - নতুন পোস্ট তৈরি
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('create', ['model' => $model]);
}
}
actionIndex()অ্যাকশনটি সমস্ত পোস্টগুলো ডেটাবেস থেকে নিয়ে আসে এবং ভিউতে পাঠায়।actionCreate()অ্যাকশনটি একটি নতুন পোস্ট তৈরি করার জন্য ব্যবহার করা হয়, যেখানে ফর্ম থেকে ইনপুট নেওয়া হয় এবং সেভ করা হয়।
৪. Yii-তে MVC এর কার্যপ্রণালী
Yii-এ MVC আর্কিটেকচার কার্যকরভাবে একত্রিত হয়। নিচে একটি সাধারণ স্টেপ-বাই-স্টেপ বর্ণনা দেওয়া হলো:
- ইউজার ইনপুট: ইউজার একটি URL বা ফর্ম থেকে ইনপুট দেয় (যেমন,
POST /post/createURL এ গিয়ে একটি নতুন পোস্ট তৈরি করা)। - কন্ট্রোলার প্রক্রিয়াকরণ: কন্ট্রোলার ইউজারের ইনপুট গ্রহণ করে এবং তা প্রক্রিয়া করে। যেমন, ফর্ম থেকে ডেটা নেওয়া, ভ্যালিডেশন করা, এবং ডেটাবেসে সংরক্ষণ করা।
- মডেল এর মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাকশন: কন্ট্রোলার ডেটার জন্য মডেল ব্যবহার করে। মডেল ডেটাবেসে কোয়েরি চালায় এবং ফলাফল ফেরত দেয়। উদাহরণস্বরূপ,
Post::find()->all()। - ভিউ রেন্ডারিং: কন্ট্রোলার প্রয়োজনীয় ডেটা ভিউতে পাঠিয়ে দেয়, যেখানে ইউজারের জন্য উপস্থাপনযোগ্য ফরম্যাটে ডেটা প্রদর্শন করা হয়। ভিউ PHP টেমপ্লেট ফাইল ব্যবহার করে HTML তৈরি করে।
- ফলাফল প্রদর্শন: ভিউে রেন্ডার করা ডেটা ইউজারকে ব্রাউজারে প্রদর্শিত হয়।
সারাংশ
Yii ফ্রেমওয়ার্কে MVC (Model-View-Controller) প্যাটার্নটি খুবই শক্তিশালী এবং কার্যকরভাবে বাস্তবায়িত। Model ডেটাবেস ইন্টারঅ্যাকশন এবং ভ্যালিডেশন পরিচালনা করে, View ইউজার ইন্টারফেস তৈরি করে এবং Controller ইউজারের ইনপুট নিয়ে মডেল এবং ভিউয়ের মধ্যে যোগাযোগ স্থাপন করে। Yii 2-এ ActiveRecord মডেল, Controller ক্লাস, এবং PHP টেমপ্লেট ভিউ ব্যবহার করে MVC আর্কিটেকচারটি সহজেই ইমপ্লিমেন্ট করা যায়।