Symfony ফ্রেমওয়ার্কে কমান্ড লাইন ইন্টারফেস (CLI) একটি গুরুত্বপূর্ণ অংশ, যা ডেভেলপারদের তাদের অ্যাপ্লিকেশন পরিচালনা এবং অটোমেটেড কাজের জন্য কমান্ড ব্যবহার করতে সক্ষম করে। Symfony-তে কমান্ড আর্গুমেন্ট এবং অপশন ব্যবহার করে বিভিন্ন কাস্টম কমান্ড তৈরি করা যায়। এই কমান্ডগুলি বিভিন্ন ধরণের ইনপুট গ্রহণ করে এবং তাদের উপর ভিত্তি করে কাজ সম্পাদন করে।
এখানে আমরা কমান্ড আর্গুমেন্ট এবং অপশন সম্পর্কে বিস্তারিত আলোচনা করব এবং কিভাবে Symfony-তে এগুলি ব্যবহার করা যায় তা দেখব।
কমান্ড আর্গুমেন্ট এবং অপশন
কমান্ড আর্গুমেন্ট (Arguments):
- Arguments হল পজিশনাল ইনপুট। এটি কমান্ডের সাথে সরাসরি প্রদান করা হয় এবং কমান্ডের নির্দিষ্ট পজিশনে প্রেরিত ইনপুট হিসেবে কাজ করে। আর্গুমেন্ট সাধারণত কমান্ডের শেষে সরবরাহ করা হয় এবং একাধিক আর্গুমেন্ট থাকতে পারে।
- আর্গুমেন্টটি বাধ্যতামূলক হতে পারে, এবং এটি সাধারণত একটি বিশেষ ক্রম অনুসরণ করে।
কমান্ড অপশন (Options):
- Options হল নামযুক্ত ইনপুট যা প্যারামিটার হিসেবে কমান্ডের সাথে প্রদান করা হয়। এগুলি সাধারণত কমান্ডের নামের পরে
--চিহ্ন দিয়ে উল্লেখ করা হয় এবং একাধিক অপশন থাকতে পারে। - অপশন সাধারণত ঐচ্ছিক থাকে এবং এগুলি বিভিন্নভাবে কনফিগার করা যায়।
Symfony তে কাস্টম কমান্ড তৈরি করা
Symfony তে কাস্টম কমান্ড তৈরি করতে, Console Command ব্যবহার করতে হয়। make:command কমান্ড ব্যবহার করে একটি নতুন কমান্ড তৈরি করা যেতে পারে, অথবা আপনি নিজে থেকে একটি নতুন Command ক্লাস তৈরি করতে পারেন।
কমান্ড তৈরি করার ধাপ:
কমান্ড ক্লাস তৈরি করা: Symfony তে একটি কাস্টম কমান্ড তৈরি করতে
Commandক্লাস তৈরি করতে হয়।উদাহরণস্বরূপ:
// src/Command/GreetCommand.php namespace App\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; class GreetCommand extends Command { protected static $defaultName = 'app:greet'; protected function configure() { $this ->setDescription('Greets the user with a custom message.') ->addArgument('name', InputArgument::REQUIRED, 'Name of the user') ->addOption('shout', null, InputOption::VALUE_NONE, 'If set, the greeting will be in uppercase'); } protected function execute(InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $greeting = 'Hello, ' . $name; if ($input->getOption('shout')) { $greeting = strtoupper($greeting); } $output->writeln($greeting); return Command::SUCCESS; } }এখানে দুটি মূল অংশ রয়েছে:
addArgument: এটি একটি আর্গুমেন্ট যুক্ত করতে ব্যবহৃত হয়। এই কমান্ডে,nameআর্গুমেন্টটি বাধ্যতামূলক।addOption: এটি একটি অপশন যুক্ত করতে ব্যবহৃত হয়। এখানেshoutঅপশনটি ঐচ্ছিক এবং যদি এটি নির্দিষ্ট করা হয় তবে আউটপুট uppercase আকারে প্রদর্শিত হবে।
- কমান্ড কনফিগারেশন: আপনার নতুন কমান্ডটি স্বয়ংক্রিয়ভাবে services.yaml ফাইলে নিবন্ধিত হবে। তবে, আপনি চাইলে ম্যানুয়ালি এটি কনফিগারও করতে পারেন।
আর্গুমেন্ট এবং অপশন ব্যবহার
কমান্ড আর্গুমেন্ট (Arguments)
- ব্যবহার: আর্গুমেন্টগুলি কমান্ডের পজিশনাল ইনপুট হিসেবে ব্যবহৃত হয়।
উদাহরণ: আপনি যখন
app:greetকমান্ড চালান, তখনnameআর্গুমেন্টটি সরবরাহ করতে হবে:php bin/console app:greet Johnআউটপুট:
Hello, Johnআর্গুমেন্টের কনফিগারেশন:
$this->addArgument('name', InputArgument::REQUIRED, 'Name of the user');- আর্গুমেন্টের ধরন:
- InputArgument::REQUIRED: আর্গুমেন্টটি বাধ্যতামূলক।
- InputArgument::OPTIONAL: আর্গুমেন্টটি ঐচ্ছিক।
কমান্ড অপশন (Options)
- ব্যবহার: অপশনগুলি নামভিত্তিক এবং ঐচ্ছিক ইনপুট হিসেবে ব্যবহৃত হয়। অপশনগুলি
--দিয়ে শুরু হয় এবং বিভিন্ন ফ্ল্যাগ ব্যবহার করে কাস্টমাইজ করা যায়। উদাহরণ: যখন আপনি
app:greetকমান্ড চালান, আপনিshoutঅপশনটি ব্যবহার করতে পারেন:php bin/console app:greet John --shoutআউটপুট:
HELLO, JOHNঅপশন কনফিগারেশন:
$this->addOption('shout', null, InputOption::VALUE_NONE, 'If set, the greeting will be in uppercase');- অপশন ধরন:
- InputOption::VALUE_NONE: অপশনটি একটি ফ্ল্যাগ হিসেবে কাজ করে, যেটি নির্দিষ্ট না হলে false হবে।
- InputOption::VALUE_REQUIRED: অপশনটির একটি মান প্রদান করা আবশ্যক।
- InputOption::VALUE_OPTIONAL: অপশনটির মান ঐচ্ছিক।
কমান্ড চালানো
Symfony-তে আপনার কাস্টম কমান্ড চালাতে, আপনি bin/console থেকে কমান্ডটি রান করতে পারেন।
কমান্ড চালানোর উদাহরণ:
ফর্মের মাধ্যমে কমান্ড চালানো:
php bin/console app:greet John --shoutআউটপুট:
HELLO, JOHNphp bin/consoleকমান্ডে সব উপলব্ধ কমান্ড দেখতে:php bin/console list
সারাংশ
Symfony তে কমান্ড আর্গুমেন্ট এবং অপশন ব্যবহার করে আপনি কাস্টম কমান্ড তৈরি করতে পারেন যা ডেটা গ্রহণ এবং প্রক্রিয়া করার জন্য অত্যন্ত কার্যকর। আর্গুমেন্ট পজিশনাল ইনপুট হিসেবে কাজ করে এবং অপশন ঐচ্ছিক ইনপুট হিসেবে ব্যবহৃত হয়। Symfony কমান্ড সিস্টেমটি ব্যবহারকারীর জন্য একটি শক্তিশালী CLI সরঞ্জাম তৈরি করতে সহায়ক, যা ডেভেলপমেন্ট, টেস্টিং, এবং ডিপ্লয়মেন্ট প্রক্রিয়া সহজ করে তোলে।