Table des matières
Comment gérer les paramètres et les options de commande dans la console Symfony?
Comment afficher la sortie dans la console Symfony?
Comment gérer les erreurs dans la console Symfony?
Comment tester les commandes dans Symfony Console?
Comment utiliser Symfony Console dans Symfony Project?
Maison développement back-end tutoriel php Réintroduire la console Symfony - CLI PHP pour les non-initiés!

Réintroduire la console Symfony - CLI PHP pour les non-initiés!

Feb 10, 2025 pm 02:06 PM

Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

Points de base

  • Symfony Console est un package autonome qui fournit un cadre simple pour créer des outils de ligne de commande, qui est utile pour des tâches répétitives telles que la migration des données, l'importation ou la création de travaux CRON.
  • Pour créer une nouvelle commande, le fichier doit être exécutable. Cela peut être fait en créant un fichier de console dans le répertoire racine du projet, en garantissant que le fichier est exécutable et en définissant l'application de console.
  • Vous pouvez utiliser la classe CommandSter de Symfony pour tester les commandes, qui fournit des classes d'entrée et de sortie spéciales pour tester les commandes sans la ligne de commande.
  • La console Symfony
  • est installée à l'aide de Composer (l'outil de gestion de la dépendance en PHP). Il fournit une API simple pour créer des commandes de ligne de commande et prend en charge les affichages de couleurs, les barres de progression, les tables et autres fonctionnalités interactives de la sortie.

Cet article a été mis à jour le 24 mai 2017 et fournit une introduction plus complète à cet outil moderne important.


"Le composant de la console simplifie le processus de création d'une interface de ligne de commande belle et testable." Ceci est le message de bienvenue que nous voyons lorsque nous visitons la page des outils de composants de la console Symfony.

En tant que développeurs de logiciels, nous devons souvent utiliser des outils de ligne de commande. Ces outils sont utiles lorsque nous devons effectuer une sorte de tâches répétitives (telles que la migration des données, l'exécution des importations ou la création de travaux CRON).

Re-Introducing Symfony Console - CLI PHP for the Uninitiated! L'outil de composant Console Symfony nous fournit un framework simple pour créer nos propres outils de ligne de commande.

Contrairement à de nombreux composants de Symfony, il s'agit d'un package autonome qui est utilisé par l'artisan de Laravel et de nombreux autres packages PHP célèbres.

Pour en savoir plus sur les alternatives à la console Symfony, voir notre article de comparaison: Battle of PHP Console!

Installation

composer require symfony/console
Copier après la connexion
Copier après la connexion
Copier après la connexion
Des informations importantes sur le compositeur sont incluses ici.

Créer une nouvelle commande

Pour créer une nouvelle commande, nous devons nous assurer que notre fichier est exécutable. Pour ce faire, créons un fichier de console dans le répertoire racine du projet. Ce fichier sera notre gestionnaire de commandement.

Maintenant, assurez-vous que le fichier est exécutable.
touch console
Copier après la connexion
Copier après la connexion

Ensuite, assurons qu'il y a Shebang au début de notre fichier. Shebang est une séquence de personnages (marque de pouce suivi de la marque d'exclamation) qui apparaît au début du script. Lorsque Shebang existe, EXEC () passera au fichier exécutable spécifié après l'exécution de Shebang. Dans notre exemple, il s'exécutera en tant que script PHP.
chmod 755 console
Copier après la connexion
Copier après la connexion
Après

, définissons notre application de console. La première itération de notre gestionnaire de commande ressemblera à ceci:

Regardons de plus près. Tout d'abord, nous chargeons automatiquement toutes les dépendances, puis importons le package d'application à partir du composant de la console. Après cela, nous créons une nouvelle instance d'application et l'exécutons.
#!/usr/bin/env php

<?php require_once __DIR__ . '/vendor/autoload.php';

use Symfony\Component\Console\Application;

$app = new Application();
$app->run();
Copier après la connexion
Copier après la connexion

Si nous utilisons ./console pour exécuter le script, nous devons obtenir le message d'aide suivant:

Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

C'est parce que nous n'avons pas encore enregistré de commandes, nous venons de construire leur cadre de base.

Créons notre script et inscrivons-le dans notre gestionnaire de commandes nouvellement créé.

Pour cet exemple spécifique, nous implémenterons deux commandes simples: l'une pour les chaînes de hachage et l'autre pour confirmer que le hachage appartient à la chaîne donnée.

Nous placerons le dossier /src de notre classe Hash.php, avec le contenu suivant:

composer require symfony/console
Copier après la connexion
Copier après la connexion
Copier après la connexion

Il est temps de créer nos commandes. Créons un nouveau fichier PHP appelé hashcommand.php.

Cette classe étendra la classe de commande de Symfony et implémentera les méthodes de configuration et d'exécution. Ces méthodes sont cruciales pour nos commandes car elles indiquent aux commandes à quoi elles ressemblent et se comportent.

La commande terminée par

est la suivante:

touch console
Copier après la connexion
Copier après la connexion

Dans la section de configuration, la méthode setName est la façon dont nous appelons la commande, SetDescription est la description de la commande, et AddArgument est l'instruction que nous déclarons que la commande acceptera un paramètre nommé mot de passe, et il est nécessaire.

Dans la section Execute, nous accédons aux paramètres via la fonction GetArgument, puis les hachiez en utilisant notre classe de hachage. Enfin, nous utilisons la méthode WriteEln de OutputInterface pour imprimer le résultat à l'écran.

Si nous exécutons notre commande comme celle-ci, nous ne verrons rien qui se passe. C'est parce que nous manquons toujours une étape très importante. Nous devons encore enregistrer nos commandes dans la console.

chmod 755 console
Copier après la connexion
Copier après la connexion

Après avoir enregistré la commande dans la console, exécutons-la.

Si nous exécutons à nouveau la commande ./console, nous pouvons voir que nous avons maintenant enregistré une nouvelle commande.

Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

Exécutez-le:

#!/usr/bin/env php

<?php require_once __DIR__ . '/vendor/autoload.php';

use Symfony\Component\Console\Application;

$app = new Application();
$app->run();
Copier après la connexion
Copier après la connexion

Nous voyons le résultat final:

Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

Hash est le résultat de l'application de la méthode PHP Hash () à une chaîne SitePoint.

Pour la fonction de confirmation de hachage, nous utiliserons la même méthode, mais nous aurons deux paramètres au lieu d'un. L'un sera la chaîne qui doit être confirmée, et l'autre sera la valeur de hachage que nous voulons vérifier.

Nous créerons un nouveau fichier de commande, juste à côté du fichier HashCommand. Appelons cela ConfirmCommand.

<?php
namespace Hash;

class Hash {

    /**
     * 接收一个字符串密码并对其进行哈希处理。
     *
     * @param string $password
     * @return string $hash
     */
    public static function hash($password) {
        return password_hash($password, PASSWORD_DEFAULT);
    }

    /**
     * 验证哈希是否与给定的密码相对应
     *
     * @param string $password
     * @param string $hash
     * @return boolean 如果哈希是从密码生成的
     */
    public static function checkHash($string, $hash) {
        if (password_verify($string, $hash)) {
            return true;
        }
        return false;
    }

}
Copier après la connexion

Ensuite, enregistrez la commande dans la console.

<?php
namespace Hash;

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;
use Symfony\Component\Console\Formatter\OutputFormatterStyle;

use Hash\Hash;

class HashCommand extends Command {

    protected function configure() {
        $this->setName("Hash:Hash")
                ->setDescription("使用Bcrypt对给定字符串进行哈希处理。")
                ->addArgument('Password', InputArgument::REQUIRED, '你想要哈希什么?');
    }

    protected function execute(InputInterface $input, OutputInterface $output) {

        $hash = new Hash();
        $input = $input->getArgument('Password');

        $result = $hash->hash($input);

        $output->writeln('你的密码哈希值:' . $result);

    }

}
Copier après la connexion

Tester

En termes de tests, Symfony nous fournit quelques outils pratiques. Le plus utile est la classe CommandSter, car elle fournit des classes d'entrée et de sortie spéciales pour tester nos commandes sans la ligne de commande.

Utilisons la classe CommandTester pour implémenter un test pour notre commande hash: hash.

Tout d'abord, créons un dossier /src au même niveau que le nôtre. /tests

Ensuite, créons notre classe de test dedans et nommez-le hashcommandtest.php:

composer require symfony/console
Copier après la connexion
Copier après la connexion
Copier après la connexion
Nous chargeons d'abord nos commandes à l'aide de la classe d'application. Ensuite, nous instancions un nouveau Commandteter. En utilisant CommandSter, nous pouvons configurer comment nous voulons appeler nos commandes. La dernière étape consiste à utiliser la méthode getDisplay () pour comparer le résultat d'exécution avec le résultat que nous attendons.

La méthode

getDisplay () enregistre le résultat de notre exécution de commande, tout comme nous le voyons sur la ligne de commande.

Conclusion

Nous venons de créer deux commandes différentes à l'aide du composant Console Symfony. Nous voyons également un bon moyen de tester ces commandes. Je vous suggère de regarder les différentes options et fonctionnalités des composants et nous donner quelques commentaires sur votre expérience dans la section des commentaires ci-dessous.

Voulez-vous voir des tutoriels plus avancés sur la console Symfony sur SitePoint? S'il vous plaît dites-nous!

Tout le code que nous avons écrit dans cet article peut être trouvé sur GitHub.

Symfony Console FAQ

Comment installer la console Symfony?

La console Symfony

est un composant du cadre Symfony qui peut être installé à l'aide de Composer (l'outil de gestion de la dépendance en PHP). Pour installer Symfony Console, vous devez exécuter la commande suivante dans le terminal:

. Cette commande téléchargera et installera le composant de la console Symfony dans votre projet. composer require symfony/console

Quelles sont les principales fonctions de la console Symfony?

Console Symfony fournit une API simple pour créer des commandes de ligne de commande. Ces commandes peuvent être utilisées pour les travaux Cron, les migrations, les importations ou tout autre type de tâche qui peut être exécuté via la ligne de commande. Il prend également en charge les affichages de couleurs, les barres de progression, les tables et autres fonctionnalités interactives de la sortie.

Comment créer une nouvelle commande dans Symfony Console?

Pour créer une nouvelle commande, vous devez créer une nouvelle classe qui étend la classe SymfonyComponentConsoleCommand. Dans cette classe, vous définissez le nom, la description, les paramètres et les options de la commande dans la méthode de configuration. La méthode d'exécution contient la logique de la commande.

Comment exécuter les commandes dans Symfony Console?

Pour exécuter la commande, vous devez utiliser le script

suivi du nom de la commande. Par exemple, si vous avez une commande appelée bin/console, vous pouvez l'exécuter avec la commande suivante: app:my-command. bin/console app:my-command

Comment utiliser la console Symfony pour la migration de la base de données?

La console Symfony

peut être utilisée en conjonction avec la doctrine (la couche d'abstraction de la base de données dans Symfony) pour gérer les migrations de la base de données. Vous pouvez créer une nouvelle commande qui exécute les requêtes SQL nécessaires pour migrer votre base de données.

Comment gérer les paramètres et les options de commande dans la console Symfony?

Les paramètres et options de commande peuvent être définis dans la méthode de configuration de la classe de commande. Vous pouvez utiliser les méthodes GetArgument et GetOption pour récupérer les valeurs de ces paramètres et options dans la méthode d'exécution.

Comment afficher la sortie dans la console Symfony?

Symfony Console fournit plusieurs façons d'afficher la sortie. Vous pouvez utiliser la méthode WriteEln pour afficher une ligne de texte, utiliser la méthode d'écriture pour afficher le texte (aucune ligne se casse à la fin) et utiliser la méthode de la table pour afficher la table.

Comment gérer les erreurs dans la console Symfony?

Les erreurs peuvent être gérées en lançant des exceptions. Symfony Console attrapera ces exceptions et affichera un message d'erreur. Vous pouvez également utiliser la méthode de sortie pour arrêter l'exécution de la commande et renvoyer le code de sortie.

Comment tester les commandes dans Symfony Console?

Symfony Console fournit une classe CommandTester qui peut être utilisée pour tester les commandes. Vous pouvez utiliser cette classe pour exécuter des commandes avec des paramètres et des options spécifiques et affirmer le code de sortie et de sortie.

Comment utiliser Symfony Console dans Symfony Project?

Dans le projet Symfony, vous pouvez utiliser le script bin/console pour exécuter les commandes. Vous pouvez également créer vos propres commandes en créant une nouvelle classe étendant la classe SymfonyComponentConsoleCommand dans le répertoire src/Command.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1673
14
Tutoriel PHP
1278
29
Tutoriel C#
1257
24
Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Apr 17, 2025 am 12:06 AM

Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

PHP et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Apr 15, 2025 am 12:15 AM

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

PHP: Gestion des bases de données et logique côté serveur PHP: Gestion des bases de données et logique côté serveur Apr 15, 2025 am 12:15 AM

PHP utilise les extensions MySQLI et PDO pour interagir dans les opérations de base de données et le traitement de la logique côté serveur, et traite la logique côté serveur via des fonctions telles que la gestion de session. 1) Utilisez MySQLI ou PDO pour vous connecter à la base de données et exécuter les requêtes SQL. 2) Gérer les demandes HTTP et l'état de l'utilisateur via la gestion de session et d'autres fonctions. 3) Utiliser les transactions pour assurer l'atomicité des opérations de base de données. 4) Empêcher l'injection de SQL, utiliser les connexions de gestion des exceptions et de clôture pour le débogage. 5) Optimiser les performances via l'indexation et le cache, écrivez du code très lisible et effectuez une gestion des erreurs.

Objectif de PHP: Construire des sites Web dynamiques Objectif de PHP: Construire des sites Web dynamiques Apr 15, 2025 am 12:18 AM

PHP est utilisé pour créer des sites Web dynamiques, et ses fonctions principales incluent: 1. Générer du contenu dynamique et générer des pages Web en temps réel en se connectant à la base de données; 2. Traiter l'interaction utilisateur et les soumissions de formulaires, vérifier les entrées et répondre aux opérations; 3. Gérer les sessions et l'authentification des utilisateurs pour offrir une expérience personnalisée; 4. Optimiser les performances et suivre les meilleures pratiques pour améliorer l'efficacité et la sécurité du site Web.

Choisir entre PHP et Python: un guide Choisir entre PHP et Python: un guide Apr 18, 2025 am 12:24 AM

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

See all articles