Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন ব্যবহৃত হয় টাস্ক বা ব্যাচ কাজের জন্য। আপনি যেকোনো CLI (Command Line Interface) ভিত্তিক কাজ যেমন ডেটাবেস মাইগ্রেশন, কাস্টম স্ক্রিপ্ট চালানো, ক্রন টাস্ক ব্যবস্থাপনা ইত্যাদি করতে Yii কনসোল কমান্ড ব্যবহার করতে পারেন। Yii কনসোল কমান্ডগুলির মধ্যে বিভিন্ন আর্গুমেন্ট নেওয়া যায় যা সেই কমান্ডের কার্যকারিতা নির্ধারণ করে।
এই অধ্যায়ে আমরা কনসোল কমান্ড তৈরি করার পদ্ধতি, এবং কমান্ডে আর্গুমেন্ট ব্যবহার করার পদ্ধতি নিয়ে আলোচনা করব।
কনসোল কমান্ড তৈরি করা
Yii ফ্রেমওয়ার্কে কনসোল কমান্ড তৈরি করতে, প্রথমে আপনাকে একটি নতুন কমান্ড ক্লাস তৈরি করতে হবে যা yii\console\Controller থেকে এক্সটেন্ড করা হয়। এই ক্লাসে আপনি আপনার কাস্টম কমান্ডের লজিক এবং আর্গুমেন্ট প্রসেসিং লিখতে পারবেন।
১. কনসোল কমান্ড ক্লাস তৈরি করা
এটি করতে আপনাকে commands ডিরেক্টরি তৈরি করতে হবে (যদি তা আগে না থাকে) এবং সেখানে আপনার কমান্ড ক্লাসটি রাখবেন। উদাহরণস্বরূপ, আপনি যদি একটি HelloCommand তৈরি করতে চান, তাহলে আপনাকে একটি নতুন PHP ফাইল তৈরি করতে হবে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex()
{
echo "Hello, Yii Console Application!\n";
}
}
এখানে, actionIndex() হল কমান্ডের মেথড যা চালানোর পর "Hello, Yii Console Application!" বার্তা প্রদর্শন করবে।
২. কনসোল কমান্ড চালানো
এখন আপনার তৈরি করা কনসোল কমান্ডটি চালানোর জন্য, CLI থেকে নিম্নলিখিত কমান্ড ব্যবহার করুন:
php yii hello/index
এটি HelloCommand ক্লাসের actionIndex() মেথডটি চালাবে এবং "Hello, Yii Console Application!" আউটপুট হিসেবে দেখাবে।
কনসোল কমান্ডে আর্গুমেন্ট ব্যবহার করা
Yii কনসোল কমান্ডে আর্গুমেন্ট ব্যবহার করা খুবই সহজ। আপনি কমান্ডের আর্গুমেন্টকে ফাংশন প্যারামিটার হিসেবে গ্রহণ করতে পারেন। এই আর্গুমেন্টগুলি কমান্ড লাইনে ব্যবহারকারী থেকে ইনপুট হিসেবে পাওয়া যায়।
১. আর্গুমেন্ট নিয়ে কনসোল কমান্ড তৈরি করা
আর্গুমেন্টের মাধ্যমে আপনি কমান্ডের কার্যকারিতা কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, একটি HelloCommand কমান্ড তৈরি করা যেটি একটি ব্যক্তির নাম গ্রহণ করবে এবং তাকে স্বাগতম জানাবে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex($name = 'Guest')
{
echo "Hello, " . $name . "!\n";
}
}
এখানে, actionIndex মেথডের $name প্যারামিটারটি আর্গুমেন্ট হিসেবে গ্রহণ করবে এবং যদি ব্যবহারকারী কিছু ইনপুট না দেয়, তাহলে ডিফল্ট মান হিসেবে "Guest" ব্যবহার করবে।
২. আর্গুমেন্ট সহ কনসোল কমান্ড চালানো
এখন, আপনি যদি ব্যবহারকারীর কাছ থেকে নাম ইনপুট নিতে চান, তাহলে কমান্ড লাইনে name আর্গুমেন্টটি প্রদান করতে হবে।
php yii hello/index John
এটি আউটপুট করবে:
Hello, John!
যদি আর্গুমেন্ট না দেয়া হয়, তাহলে এটি ডিফল্ট নাম Guest ব্যবহার করবে:
php yii hello/index
এটি আউটপুট করবে:
Hello, Guest!
আর্গুমেন্টের ধরন এবং Validation
Yii কনসোল কমান্ডে আর্গুমেন্টের ধরন (type) এবং ভ্যালিডেশন যোগ করা যায়। আপনি required, default, validate ইত্যাদি প্যারামিটার ব্যবহার করে আর্গুমেন্টগুলোকে কাস্টমাইজ করতে পারেন।
১. আর্গুমেন্ট ভ্যালিডেশন
Yii ফ্রেমওয়ার্ক আপনাকে আর্গুমেন্টের জন্য ভ্যালিডেশন যোগ করার সুযোগ দেয়, যেমন আর্গুমেন্টটি একটি ইন্টিজার হতে হবে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex($name = 'Guest', $age = null)
{
if ($age !== null && !is_numeric($age)) {
echo "Age must be a number.\n";
return;
}
echo "Hello, " . $name . "!\n";
if ($age !== null) {
echo "You are " . $age . " years old.\n";
}
}
}
এখানে, $age আর্গুমেন্টটি কেবলমাত্র যদি সংখ্যা হয়, তবেই গ্রহণ করা হবে।
২. কনসোল কমান্ড চালানোর উদাহরণ
php yii hello/index John 25
এটি আউটপুট করবে:
Hello, John!
You are 25 years old.
যদি age আর্গুমেন্ট হিসেবে একটি অবৈধ মান দেয়া হয়, যেমন একটি স্ট্রিং, তাহলে এটি একটি ত্রুটি দেখাবে:
php yii hello/index John abc
এটি আউটপুট করবে:
Age must be a number.
আর্গুমেন্টের ডিফল্ট মান নির্ধারণ
Yii ফ্রেমওয়ার্কে, আপনি আর্গুমেন্টের জন্য ডিফল্ট মান নির্ধারণ করতে পারেন। এটি সেই আর্গুমেন্টের জন্য ব্যবহৃত হবে যদি ব্যবহারকারী কোন মান প্রদান না করে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex($name = 'Guest', $city = 'Unknown')
{
echo "Hello, " . $name . " from " . $city . "!\n";
}
}
এখন, যদি ব্যবহারকারী নাম বা শহর ইনপুট না দেয়, তবে সেগুলি স্বয়ংক্রিয়ভাবে ডিফল্ট মান গ্রহণ করবে।
কনসোল কমান্ড চালানো
php yii hello/index Alice Dhaka
এটি আউটপুট করবে:
Hello, Alice from Dhaka!
যদি কোনো আর্গুমেন্ট না দেয়া হয়, তবে ডিফল্ট মান ব্যবহার হবে:
php yii hello/index
এটি আউটপুট করবে:
Hello, Guest from Unknown!
সারাংশ
Yii ফ্রেমওয়ার্কের কনসোল অ্যাপ্লিকেশন এবং কনসোল কমান্ডস খুবই শক্তিশালী এবং লচিল। আপনি কনসোল কমান্ড তৈরি করে অ্যাপ্লিকেশনের ব্যাচ কাজ পরিচালনা করতে পারেন এবং আর্গুমেন্টের মাধ্যমে কমান্ডের কার্যকারিতা কাস্টমাইজ করতে পারেন। কনসোল কমান্ডে আর্গুমেন্ট গ্রহণ, তাদের ভ্যালিডেশন, ডিফল্ট মান সেট করা এবং কাস্টম আর্গুমেন্ট প্রক্রেসিং Yii ফ্রেমওয়ার্কের মাধ্যমে খুবই সহজ।