window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster가 이미 존재합니다') } else { w.LeadBooster = { q: [], on: 함수 (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 함수 (n) { this.q.push({ t: 't', n: n }) }, } } })() PHP 개발. Symfony 콘솔 컴포넌트 - 팁 및 요령 - The Codest
The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2022-04-14
소프트웨어 개발

PHP 개발. Symfony 콘솔 컴포넌트 - 팁과 요령

The Codest

세바스찬 루작

PHP 유닛 리더

이 문서는 심포니 콘솔 개발에 대한 가장 유용하고 검색하기 쉬운 팁과 요령을 보여드리기 위해 작성되었습니다.

다음과 같은 경우 PHP 개발자 당신의 PHP 소프트웨어 개발 를 다음 단계로 끌어올리기 위해 이 글을 준비했습니다. 더 이상 고민할 필요 없이 본론으로 들어가겠습니다.

소개

자주 듣게 됩니다:
​

PHP는 웹 페이지 제작에만 사용됩니다.

이미지

​
이는 완전히 사실이 아닙니다. PHP 개발 는 다양한 비즈니스 영역에서 사용되며, 언뜻 보기에는 사소해 보이는 경우가 많습니다.

둘 다 PHP 언어와 그 환경은 HTTP 통신을 완벽하게 지원하므로 CLI 환경 사용과 함께 웹 봇, 웹 크롤러 또는 외부 환경에서 데이터를 동기화하는 도구를 빠르게 만들 수 있습니다.
​
이를 뒷받침하기 위해 몇 가지 통계가 있습니다. Symfony 프레임워크명령줄에 쉽게 액세스할 수 있는 이 가장 많이 사용 및 다운로드된 TOP5에 올랐습니다. Symfony 역대 최고의 패키지입니다.

​
이미지

​

​
이 시점에서, 모든 비즈니스에 도움이 되는 몇 가지 팁을 공유하고자 합니다. PHP 개발자 작성 시 알아야 할 사항 코드 in PHP CLI에서 작동하도록 되어 있습니다.
​

사용자 지정 데이터 원본이 포함된 대화형 선택 테이블

​
이미지
​

항목을 선택할 수 있는 테이블 렌더링은 다음을 사용하여 쉽게 수행할 수 있습니다. Symfony 명령:

// src/App/Command/TestCommand.php

    protected 함수 execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("대화형 선택 테이블 예제");

        $table = $io->createTable();
        $table->setHeaderTitle("대화형 선택 테이블 예제");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        Command::SUCCESS를 반환합니다;
    } 

​
위의 예제에서는 다음을 활용하고 있습니다. PHP 발전기 를 데이터 소스로 사용하면 향후 확장성에 도움이 됩니다. 위의 예는 간단한 데이터 생성기입니다:

    보호된 함수 tagsTableRows(): 생성자
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagResponse) { {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

최종 결과는 CLI로 렌더링된 테이블입니다.
​
이미지
​

대화형으로 만들려면 다음과 같은 래퍼로 제공되는 QuestionHelper를 사용해야 합니다. 심포니스타일 출력.

  (...)
    $choice = 새로운 ChoiceQuestion(
        질문: '어떤 선택을 하시겠습니까?',
        choices: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

                $carry를 반환합니다;
            }
        )
    );
    $answer = $io->askQuestion($choice);
   (...)

결과적으로 동일한 소스에서 테이블 표시가 있는 대화형 선택 필드를 얻게 되었습니다.
​

민감한 사용자 데이터에는 항상 숨겨진 프롬프트 사용

​
이미지
​

민감한 데이터를 제공하는 동안 프롬프트를 숨기는 것은 일반적인 관행이며 다음에서도 쉽게 달성할 수 있습니다. Symfony 콘솔.
다음에서 기본 제공 래퍼를 사용할 수 있습니다. 심포니스타일 클래스에 대한 예제입니다:

  (...)
    보호된 함수 실행(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("사용자에게 민감한 데이터를 요청합니다");
        $io->askHidden(
            question: "여기에 API 키를 입력하세요",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        반환 Command::SUCCESS;
    }

진행률 표시줄 스타일 지정

​
이미지
​

사용자에게 진행 상황을 알리기 위해 진행률 표시줄을 사용할 수 있습니다. Symfony 콘솔은 사용자에게 진행 상황을 보여줄 수 있는 좋은 방법이지만, 항상 진행 상황 출력의 스타일을 올바르게 지정하는 것을 잊지 마세요. 다음을 사용하여 다양한 부분과 렌더링 방식을 완벽하게 제어할 수 있습니다. 포맷터. 진행률 표시줄의 형식은 여러 가지 자리 표시자의 문자열일 뿐입니다. 사용 가능한 자리 표시자는 다음과 같습니다: 현재, 최대, 바, 퍼센트, 경과, 남은, 추정, 메모리 그리고 메시지. 아래 예시를 참고해 보세요.

(...)
 보호된 함수 실행(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("스타일이 지정된 진행률 표시줄 예제");

 $progressBar = new ProgressBar($io, 10000);
 $progressBar->setFormat('%current%/%max% [r%] %percent:3s%%')
 %elapsed:6s%/%estimated:-6s% %memory:6s%');
 $progressBar->start();
 for ($i = 0; $i advance();
 usleep(420);
 }

 $progressBar->finish();
 $io->newLine();

 Command::SUCCESS를 반환합니다;
 }

단말기에서 표시할 수 있는 형식이라면 거의 모든 형식과 포맷터를 사용할 수 있습니다. 공식 Symfony 문서
​

콘솔 명령에 제안 사항 제공

​
이미지
​

우리는 개발 생활에서 콘솔 제안, 자동 완성 기능 등에 익숙합니다. 콘솔 애플리케이션을 만드는 경우 사용자가 로우레벨 CLI 솔루션 사용법을 혼동하지 않도록 콘솔 기능을 추가하는 것을 고려해야 합니다. PHP 심포니 콘솔은 다음을 사용하여 바로 이 기능도 제공할 수 있습니다. 완료 입력 클래스.

(...)
    public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
    {
        if ($input->mustSuggestArgumentValuesFor(argumentName: 'someArgument')) {
            $suggestions->suggestValues(['someSuggestion', 'otherSuggestion']);
        }
    }

원하는 곳 어디에서나 인쇄

​
Symfony 5.1 는 CLI 애플리케이션에서 커서 위치를 처리하는 새로운 방법을 도입했습니다. 그 이후로 화면의 특정 위치에서 편리하게 읽고 쓸 수 있습니다. 커서 클래스:

(...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Cursor example");
​
        $cursor = new Cursor($io);
        $cursor->clearScreen();
        for ($x = 0; $x <= 10; $x++) {
            for ($y = 0; $y <= 10; $y++) {
                $cursor->moveToPosition($x, $y);
​
                if ($y === $x) {
                    $io->write(".");
                }
            }
        }
        $io->write("Hello, World!");
        $io->newLine();
​
        return Command::SUCCESS;
    }

이미지
이 짧은 목록은 빙산의 일각에 불과합니다. 다음과 같은 가능성이 있습니다. Symfony 콘솔 를 기반으로 하는 Psalm, PHPStan 또는 Composer와 같은 수많은 프로젝트에서 알 수 있듯이, 그 수는 무궁무진합니다. PHP 수백만 명의 PHP 개발자 전 세계에 걸쳐 있습니다.

협력 배너

관련 문서

소프트웨어 개발

PHP를 사용하지 말아야 하는 두 가지 이유

PHP 개발자로서 저는 PHP5의 첫 번째 (옵션!) GC 구현인 PHP4 시절을 아직도 기억하고 있으며, PHP7의 등장에 대한 _과대광고_를 겪으며 살았습니다.

The Codest
세바스찬 루작 PHP 유닛 리더
소프트웨어 개발

내부 개발자와 외부 개발자 고용하기

내부에서 채용할까요, 아니면 외부에서 채용할까요? 최고의 딜레마입니다! 다음 글에서 outsourcing 또는 사내 팀 구축의 이점을 알아보세요.

The Codest
그레고르즈 로즈무스 자바 유닛 리더

지식창고를 구독하고 IT 분야의 전문 지식을 최신 상태로 유지하세요.

    회사 소개

    The Codest - 폴란드에 기술 허브를 둔 국제 소프트웨어 개발 회사입니다.

    영국 - 본사

    • 사무실 303B, 182-184 하이 스트리트 노스 E6 2JA
      영국 런던

    폴란드 - 현지 기술 허브

    • 파브리츠나 오피스 파크, 알레야
      포코주 18, 31-564 크라쿠프
    • 뇌 대사관, 콘스트럭터스카
      11, 02-673 바르샤바, 폴란드

      The Codest

    • 홈
    • 회사 소개
    • 서비스
    • Case Studies
    • 방법 알아보기
    • 채용 정보
    • 사전

      서비스

    • IT 자문
    • 소프트웨어 개발
    • 백엔드 개발
    • 프론트엔드 개발
    • Staff Augmentation
    • 백엔드 개발자
    • 클라우드 엔지니어
    • 데이터 엔지니어
    • 기타
    • QA 엔지니어

      리소스

    • 외부 소프트웨어 개발 파트너와의 협력에 대한 사실과 오해
    • 미국에서 유럽으로: 미국 스타트업이 유럽으로 이전을 결정하는 이유
    • 테크 오프쇼어 개발 허브 비교: 테크 오프쇼어 유럽(폴란드), 아세안(필리핀), 유라시아(터키)
    • CTO와 CIO의 주요 과제는 무엇인가요?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • 웹사이트 이용 약관

    저작권 © 2025 by The Codest. 모든 권리 보유.

    ko_KRKorean
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek ko_KRKorean