Symfony ফ্রেমওয়ার্কে কনসোল কমান্ড তৈরি করা খুবই সহজ এবং কার্যকরী। Symfony কনসোল কমান্ডগুলি মূলত অ্যাপ্লিকেশনটিকে CLI (Command Line Interface) এর মাধ্যমে পরিচালনা করার সুযোগ দেয়। আপনি Symfony-এর কমান্ড-লাইন টুল ব্যবহার করে বিভিন্ন ধরনের টাস্ক, যেমন ডেটাবেস মাইগ্রেশন, ব্যাচ প্রক্রিয়া, এবং অন্যান্য ক্রোন টাস্ক চালাতে পারেন।
এখানে, আমরা কিভাবে Symfony-তে কাস্টম কনসোল কমান্ড তৈরি করতে পারি এবং এটি কিভাবে কার্যকরীভাবে ব্যবহার করা যায় তা দেখব।
কাস্টম কনসোল কমান্ড তৈরি করার প্রক্রিয়া
কনসোল কমান্ড ক্লাস তৈরি করা:
Symfony কনসোল কমান্ডগুলি
Commandক্লাসের মাধ্যমে তৈরি করা হয়, যা Symfony এরConsoleকম্পোনেন্ট থেকে প্রাপ্ত।আপনাকে প্রথমে
make:commandকমান্ড ব্যবহার করে একটি নতুন কনসোল কমান্ড ক্লাস তৈরি করতে হবে।php bin/console make:command App\Command\MyCustomCommandএটি একটি কাস্টম কমান্ড ক্লাস তৈরি করবে, যা
src/Command/MyCustomCommand.phpফাইলে থাকবে।
কাস্টম কনসোল কমান্ডের উদাহরণ
ধরা যাক, আমরা একটি কাস্টম কমান্ড তৈরি করতে চাই যা কনসোলের মাধ্যমে একটি বার্তা প্রিন্ট করবে।
1. MyCustomCommand ক্লাস তৈরি:
// src/Command/MyCustomCommand.php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class MyCustomCommand extends Command
{
// কনসোল কমান্ডের নাম
protected static $defaultName = 'app:my-custom-command';
protected function configure(): void
{
// কমান্ডের বর্ণনা
$this->setDescription('This is a custom command that prints a message.');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
// আউটপুটে একটি বার্তা প্রিন্ট করা
$output->writeln('Hello, this is your custom Symfony command!');
// সফলভাবে কমান্ড শেষ হয়েছে এমন একটি স্ট্যাটাস কোড রিটার্ন করা
return Command::SUCCESS;
}
}
$defaultName: এটি কমান্ডের নাম, যেটি আপনি কনসোল থেকে ব্যবহার করতে পারবেন।configure(): এই মেথডে আপনি কমান্ডের বর্ণনা, অপশন, এবং আর্গুমেন্টস কনফিগার করতে পারেন।execute(): এখানে আপনি কমান্ডের মূল কার্যপ্রণালী নির্ধারণ করেন। এটিInputInterfaceএবংOutputInterfaceঅবজেক্ট ব্যবহার করে ইনপুট এবং আউটপুট পরিচালনা করে।
2. কনসোল কমান্ড চালানো:
এখন, আমাদের কাস্টম কমান্ডটি তৈরি হয়ে গেছে, আমরা এটি কনসোলের মাধ্যমে চালাতে পারি।
php bin/console app:my-custom-command
এটি কনসোল আউটপুটে Hello, this is your custom Symfony command! বার্তা প্রিন্ট করবে।
কনসোল কমান্ডে আর্গুমেন্ট এবং অপশন ব্যবহার
Symfony কনসোল কমান্ডে আর্গুমেন্ট এবং অপশন ব্যবহার করা যেতে পারে, যা কমান্ডের ব্যবহারকারীর কাছ থেকে ইনপুট গ্রহণ করতে সাহায্য করে।
1. আর্গুমেন্ট (Arguments):
আর্গুমেন্ট কমান্ডের সাথে প্রয়োজনীয় ডেটা প্রদান করতে ব্যবহার করা হয়।
// src/Command/GreetCommand.php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class GreetCommand extends Command
{
protected static $defaultName = 'app:greet';
protected function configure(): void
{
$this->setDescription('Greets the user.')
->addArgument('name', InputArgument::REQUIRED, 'The name of the user');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
$output->writeln("Hello, $name!");
return Command::SUCCESS;
}
}
এখানে name আর্গুমেন্টটি InputArgument::REQUIRED হিসেবে ডিফাইন করা হয়েছে, যা কমান্ড চলানোর সময় ব্যবহারকারীকে অবশ্যই একটি নাম দিতে হবে।
2. অপশন (Options):
অপশনগুলি ঐচ্ছিক ইনপুট হিসাবে ব্যবহৃত হয়, এবং এগুলি সাধারণত সংক্ষিপ্ত অথবা দীর্ঘ ফর্মে হতে পারে।
// src/Command/GreetOptionCommand.php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class GreetOptionCommand extends Command
{
protected static $defaultName = 'app:greet-option';
protected function configure(): void
{
$this->setDescription('Greets the user with an optional message.')
->addOption('message', null, InputOption::VALUE_OPTIONAL, 'A custom greeting message', 'Hello');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$message = $input->getOption('message');
$output->writeln($message);
return Command::SUCCESS;
}
}
এখানে message অপশনটি InputOption::VALUE_OPTIONAL হিসেবে ডিফাইন করা হয়েছে, যা ঐচ্ছিক এবং ডিফল্ট মান Hello।
কমান্ড চালানোর উদাহরণ:
আর্গুমেন্ট সহ:
php bin/console app:greet Johnঅপশন সহ:
php bin/console app:greet-option --message="Good Morning"
কনসোল কমান্ডের আউটপুট ফরম্যাটিং
Symfony কনসোল কমান্ডে আউটপুট ফরম্যাট করার জন্য কিছু টুল সরবরাহ করে, যেমন:
writeln(): সাধারণ আউটপুট।write(): এক লাইনে আউটপুট লেখে।error(): ত্রুটি বার্তা আউটপুট করে।
$output->writeln("<info>Success!</info>");
$output->writeln("<error>Error occurred!</error>");
এটি আউটপুটে বিভিন্ন স্টাইল যেমন info, error, comment, question ইত্যাদি ব্যবহার করতে দেয়।
সারাংশ
Symfony-তে কাস্টম কনসোল কমান্ড তৈরি করা খুবই সহজ এবং এটি Symfony অ্যাপ্লিকেশনের কমান্ড-লাইন ইন্টারফেসে বিভিন্ন কাজ সম্পাদন করতে সহায়ক। আপনি কাস্টম কমান্ডের মাধ্যমে আর্গুমেন্ট, অপশন এবং আউটপুট ফরম্যাটিংসহ বিভিন্ন কার্যকলাপ পরিচালনা করতে পারেন। কনসোল কমান্ডের মাধ্যমে ক্রোন জব, ব্যাচ অপারেশন, বা অন্যান্য ব্যাকগ্রাউন্ড টাস্ক চালানোর জন্য এটি অত্যন্ত উপকারী।