PHP Academy · บทเรียน

คอมโพเนนต์คอนโซล: คำสั่ง CLI

สร้างเครื่องมือ CLI แบบโต้ตอบด้วยคลาสคำสั่งของ Symfony Console

บทเรียน 4 จาก 413 ขั้นตอน

คอมโพเนนต์คอนโซล: คำสั่ง CLI เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คอมโพเนนต์คอนโซลของ Symfony คืออะไร

Symfony Console ช่วยให้คุณสร้างแอปพลิเคชัน CLI ใน PHP ที่มีโครงสร้างและทดสอบได้ พร้อมตัวเลือก อาร์กิวเมนต์ แถบความคืบหน้า และเอาต์พุตที่มีสี

การติดตั้ง

ติดตั้งคอมโพเนนต์

$ composer require symfony/console

การสร้างคำสั่ง

สืบทอดจาก Command และเขียนทับ configure() กับ execute()

<?php
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class GreetCommand extends Command
{
    protected static string $defaultName = "app:greet";

    protected function configure(): void
    {
        $this->setDescription("Greet a user")
             ->addArgument("name", \InputArgument::REQUIRED, "Name to greet")
             ->addOption("uppercase", "u", \InputOption::VALUE_NONE, "Uppercase output");
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $name = $input->getArgument("name");
        if ($input->getOption("uppercase")) $name = strtoupper($name);
        $output->writeln("Hello, $name!");
        return Command::SUCCESS;
    }
}

การตั้งค่าแอปพลิเคชัน

ลงทะเบียนคำสั่งใน Application แล้วเรียกใช้

<?php
use Symfony\Component\Console\Application;

$app = new Application("MyApp", "1.0.0");
$app->add(new GreetCommand());
$app->run();

อาร์กิวเมนต์และตัวเลือก

อาร์กิวเมนต์เป็นค่าตามตำแหน่ง (จำเป็นหรือไม่จำเป็นก็ได้) ส่วนตัวเลือกเป็นแฟล็กที่มีชื่อ (--name=value หรือ -n value)

<?php
$this->addArgument("file",  InputArgument::REQUIRED)
     ->addArgument("output", InputArgument::OPTIONAL, "Output file", "out.txt")
     ->addOption("verbose", "v",  InputOption::VALUE_NONE, "Verbose output")
     ->addOption("format",  "f",  InputOption::VALUE_REQUIRED, "Output format", "json");

ตัวช่วยเอาต์พุต

จัดรูปแบบเอาต์พุตด้วยเมธอดตัวช่วย

<?php
$output->writeln("<info>Success!</info>");
$output->writeln("<error>Error occurred</error>");
$output->writeln("<comment>Processing...</comment>");

ProgressBar

แสดงแถบความคืบหน้าสำหรับงานที่ใช้เวลานาน

<?php
use Symfony\Component\Console\Helper\ProgressBar;

$bar = new ProgressBar($output, count($items));
$bar->start();
foreach ($items as $item) {
    processItem($item);
    $bar->advance();
}
$bar->finish();

ตัวช่วยตาราง

แสดงข้อมูลแบบตารางในเทอร์มินัล

<?php
use Symfony\Component\Console\Helper\Table;

$table = new Table($output);
$table->setHeaders(["ID", "Name", "Email"])
      ->setRows($userData)
      ->render();

ตัวช่วยคำถาม

ขอข้อมูลนำเข้าจากผู้ใช้แบบโต้ตอบ

<?php
use Symfony\Component\Console\Question\Question;
$helper   = $this->getHelper("question");
$question = new Question("Enter database password: ");
$question->setHidden(true);
$password = $helper->ask($input, $output, $question);

รหัสการส่งคืน

ส่งคืน Command::SUCCESS (0), Command::FAILURE (1) หรือ Command::INVALID (2) จาก execute() ระบบ CI ใช้รหัสเหล่านี้

ใน Laravel

คำสั่ง Artisan ของ Laravel สืบทอดจาก Illuminate\Console\Command และใช้พร็อพเพอร์ตี $signature กับ $description แทน configure()

สรุป

สร้างคำสั่งโดยสืบทอดจาก Command กำหนดอาร์กิวเมนต์และตัวเลือกใน configure() ดำเนินตรรกะใน execute() ใช้ตัวช่วยสำหรับแถบความคืบหน้า ตาราง และการขอข้อมูลจากผู้ใช้

ตรวจสอบอย่างรวดเร็ว

คำสั่งที่ทำงานสำเร็จควรส่งคืนจำนวนเต็มใดจาก execute()

เริ่มต้นได้ฟรี

เรียนรู้ PHP ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
49
บทเรียน
195

คำถามที่พบบ่อย

บทเรียน “คอมโพเนนต์คอนโซล: คำสั่ง CLI” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คอมโพเนนต์คอนโซล: คำสั่ง CLI” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คอมโพเนนต์คอนโซล: คำสั่ง CLI”

สร้างเครื่องมือ CLI แบบโต้ตอบด้วยคลาสคำสั่งของ Symfony Console คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “คอมโพเนนต์คอนโซล: คำสั่ง CLI” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. HttpFoundation: คำขอและการตอบกลับ
  2. คอนเทนเนอร์ DependencyInjection
  3. EventDispatcher: อีเวนต์แบบแยกส่วน
  4. คอมโพเนนต์คอนโซล: คำสั่ง CLI
← กลับไปที่ PHP Academy