The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2022-04-14
Desarrollo de software

PHP Desarrollo. Symfony Console Component - Trucos y consejos

The Codest

Sebastian Luczak

PHP Jefe de Unidad

Este artículo fue creado con el objetivo de mostrarte los consejos y trucos más útiles y recuperables sobre el desarrollo de la consola Symfony.

Si usted es un PHP desarrollador que quiere llevar su PHP desarrollo de software al siguiente nivel, este artículo es para ti. Sin más preámbulos, vayamos al grano.

Introducción

Se oye a menudo:
​

PHP sólo se utiliza para hacer páginas web

imagen

​
Esto es completamente falso porque hoy en día Desarrollo PHP se utiliza en muchos ámbitos empresariales diferentes, a menudo no tan triviales a primera vista.

Tanto el PHP y su entorno soportan perfectamente la comunicación HTTP que, junto con el uso del entorno CLI, permite crear rápidamente bots web, rastreadores web o herramientas que sincronizan datos en entornos externos.
​
Para apoyar esto tengo algunas estadísticas que muestran que el componente Consola de la Marco Symfonyque permite acceder fácilmente a la línea de comandos, se encuentra en el TOP5 de los más utilizados y descargados. Symfony paquetes de todos los tiempos.

​
imagen

​

​
En este punto, nos gustaría compartir con usted algunos trucos que cada Desarrollador PHP debe saber al escribir código en PHP que se supone que funciona en la CLI.
​

Tabla de selección interactiva con fuente de datos personalizada

​
imagen
​

La representación de tablas con la posibilidad de elegir entradas se puede conseguir de forma sencilla utilizando Symfony Comando:

// src/App/Command/TestCommand.php

    protected function ejecutar(InputInterface $input, OutputInterface $output): int
    {
        $io = nuevo SymfonyStyle($input, $output);
        $io->title("Ejemplo de tabla de selección interactiva");

        $table = $io->createTable();
        $table->setHeaderTitle("Ejemplo de tabla de selección interactiva");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
En el ejemplo anterior estamos aprovechando Generadores PHP como fuente de datos - lo que ayuda a la escalabilidad en el futuro. Generador de datos simple para el ejemplo anterior:

    función protegida tagsTableRows(): Generador
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

El resultado final es una Tabla renderizada en CLI.
​
imagen
​

Para hacerlo interactivo necesitamos utilizar QuestionHelper, que se proporciona como envoltorio alrededor de SymfonyStyle salida.

  (...)
    $choice = nueva ChoiceQuestion(
        pregunta: '¿Qué selección eliges?
        opciones: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

                return $carry;
            }
        )
    );
    $answer = $io->askQuestion($choice);
   (...)

Como resultado, estamos obteniendo un campo de elección interactivo con una tabla de visualización de la misma fuente.
​

Utilice siempre un indicador oculto para los datos confidenciales del usuario

​
imagen
​

Ocultar los datos sensibles es una práctica habitual y también es fácil de conseguir en Symfony Consola.
Puede utilizar la envoltura incorporada en SymfonyStyle mediante el siguiente ejemplo:

  (...)
    protected function ejecutar(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Pedir datos sensibles al usuario");
        $io->askHidden(
            question: "Proporcione aquí su clave API",
            validator: function($answer) { return (42 == strlen($answer)) ?? 1TP62Respuesta; }
        );

        return Comando::ÉXITO;
    }

Estiliza tus barras de progreso

​
imagen
​

Para comunicar algún progreso al usuario podemos utilizar Barras de Progreso. Symfony Console tiene una gran manera de mostrar el progreso al usuario, pero recuerda siempre dar el estilo correcto a tu salida de progreso. Puedes tener un control total sobre las diferentes partes y cómo se muestran usando Formateador. El formato de la barra de progreso es sólo una cadena de diferentes marcadores de posición. Los marcadores de posición disponibles son: actual, max, bar, por ciento, transcurrido, resto, estimado, memoria y mensaje. Juegue con ellos con el ejemplo siguiente.

(...)
 protected function ejecutar(EntradaInterfaz $input, SalidaInterfaz $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Ejemplo de barra de progreso con estilo");

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

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

 return Comando::ÉXITO;
 }

Puede utilizar casi cualquier cosa como formateador siempre que su terminal sea capaz de mostrarlo. oficial Symfony documentación
​

Proporcione sugerencias a sus comandos de consola

​
imagen
​

Estamos acostumbrados a la sugerencia de consola, funciones de autocompletado y cosas así en nuestra vida de desarrollo. Si estás creando una aplicación de consola deberías considerar añadirla para que tus usuarios no se confundan sobre cómo usar tu solución CLI de bajo nivel. PHP Symfony Console puede proporcionar que también, fuera de la caja, utilizando Entrada de finalización clase.

(...)
    public function completar(CompletionInput $input, CompletionSuggestions $suggestions): void
    {
        if ($input->mustSuggestArgumentValuesFor(argumentName: 'algunArgumento')) {
            $suggestions->suggestValues(['algunaSugerencia', 'otraSugerencia']);
        }
    }

Imprima donde quiera

​
Symfony 5.1 introdujo una nueva forma de manejar la posición del cursor en las aplicaciones CLI. Desde entonces es posible leer y escribir en un lugar específico de la pantalla utilizando la práctica herramienta Cursor clase:

(...)
    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;
    }

imagen
Esta breve lista de trucos es sólo la punta del iceberg. Las posibilidades de Consola Symfony son infinitas, como demuestran los numerosos proyectos como Psalm, PHPStan o Composer que se basan en PHP y utilizado por millones de Desarrolladores PHP en todo el mundo.

bandera de cooperación

Artículos relacionados

Desarrollo de software

Dos razones para no utilizar PHP

Como desarrollador de PHP todavía recuerdo los días de PHP4, la primera implementación (¡opcional!) de GC en PHP5, y viví el _hype_ de la llegada de PHP7 y...

The Codest
Sebastian Luczak PHP Jefe de Unidad
Desarrollo de software

Contratación de desarrolladores internos o externos

¿Contratación interna o externa? Es el dilema definitivo. Descubra las ventajas de outsourcing o de crear un equipo interno en el siguiente artículo.

The Codest
Grzegorz Rozmus Jefe de unidad Java

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

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