Découvrir Symfony3

Créer sa propre commande

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Dans de très nombreux cas, vous aurez besoin de commandes qui seront exécutées en dehors de votre application web. Vous allez créer une commande personnalisée et la lancer.
06:35

Transcription

On a vu ensemble comment on utilise les commandes de Symfony c'est-à-dire les commandes qui sont déjà fournies. Celle qu'on peut, je vous le rappelle, obtenir par « bin/console ». En appelant « bin/console », vous aurez toutes les commandes. Ici vous souvenez bien, je vous l'ai dit au début, on peut créer ses propres commandes. Il y a plein d'utilisations possibles, évidemment à la création d'une commande. La plupart du temps ce qu'on va utiliser généralement ah, ça va être des commandes qui vont exécuter des processus particuliers, parce qu'on a besoin de faire des choses en dehors de l'exécution web de notre application. Alors, on va pour créer des commandes d'abord dans un de nos bundles, peu importe lequel, créer un répertoire qui va s'appeler « Command », attention avec un C majuscule. Vous remarquerez qu'il y a toujours des majuscules devant les dossiers que l'on fait à l'intérieur et bien des bundles tout simplement parce que ça va être reliée avec « NameSpace ». ben si vous n'avez pas compris ça du coup ben là maintenant vous l'avez compris. On va faire un nouveau fichier et on va l'appeler comment on va l'appeler, ben « MyCommand », bien sûr. Alors, toutes les commandes doivent finir ah, par le mot « Command », c'est voilà, c'est une obligation sinon elles ne seront pas enregistrées du tout. Une fois que vous aurez fait ça. On va ouvrir un tag PHP comme d'habitude, et puis on va commencer d'abord par lui donner le bon NameSpace qui va être « MyBundle », OK. Et puis « Command », là vous êtes OK. Et on va y aller, on va créer une classe qui va s'appeler « MyCommand », même écriture que ce qu'on a mis pour le nom du fichier. Et cette fois-ci on va faire un « extend » alors, non pas des contrôleurs parce qu'on n'est pas dans les contrôleurs, mais du « ContainerAwareCommand », celui-ci, ça c'est parfait. Si vous faites ça et ben vous créez une commande. Bien sûr évidemment il va falloir des choses à l'intérieur. La première des choses que devez avoir c'est une « protected function » donc une fonction protégée « configure() », ça vous permette de configurer la commande. Qu'est-ce que c'est ça ? C'est simplement, un appel à « this » et ensuite, des paramètres derrières. Alors, il y'en a plein de paramètres bien sûr. On peut faire un « set » de « Name », un « set » de « Helper » particulier, des définitions, il y a plein plein de choses à faire. On va se contenter de faire le basique de chez basique, d'abord le « Name », le Name c'est la commande que vous allez vouloir taper. Alors, on va le mettre sous un espace « My » et puis celle-ci on va l'appeler simplement « first » commande tout simplement, pour lancer cette commande il faudra taper un « bin/console/my:first », avec un espace entre les deux évidemment Ensuite, on va lui mettre une désinscription, « setDescription() » comme ça. Alors, la description vous voyez que ça prend une « String » et ça va simplement vous permette de donner une description et bien pour votre commande. Donc nous, on va dire que c'est une « Super Commande ». Et on va finir comme ça, bien sûr il y aura plein de choses qu'on pourra rajouter par la suite, il y a énormément de paramètres possibles, la configuration est très très très complète pour les commandes Et puis maintenant, il va falloir coder le corps de cette fonction. Alors le corps de cette fonction se met dans une fonction « execute() » qui permet d'exécuter la commande. Voyez que c'est pas compliqué alors, attention par contre à l'intérieur d'« execute() », quand Symfony va passer dedans, il va injecter deux paramètres, qu'il va falloir les renseigner ici, il faut qu'on ait des arguments sinon ça ne marchera pas. Il faut que ce soit typé, « InputInterface » donc vous imaginez bien que ça, c'est ce que l'utilisateur va pouvoir utiliser c'est sa partie à lui, tout ce qu'il aura tapé et bien qui seront soit des arguments, soit des options de commandes ça viendra de mettre dans une « input ». En fait, concrètement de la commande au code de la console c'est une « Input » qui prendra les informations. Et puis on va aussi avoir un « OutputInterface » avec un paramètre « $output » comme ça. Et voilà et là le « output » évidemment ça traitera de la sortie de la console, c'est-à-dire ce qui va simplement sortir. Donc là on ne va pas coder grandes choses évidemment puisque c'est un premier test, il faut que vous y allier au fur et à mesure. On va simplement ici lui demander, au travers de « output », et bien de nous envoyer quelques choses dans la console, alors il y a beaucoup de possibilités. Il y a le « Write », le « Writeln » que sont deux fonctions que vous pouvez l'utiliser on va utiliser celle-ci. qui prend au début un message qui peut être soit un « URL » soit une « String » puis des options, nous on va simplement mettre une « String » et nous va lui dire OK, tout fonctionne, comme ça. Une sorte de « Hello World », ni plus ni moins, c'est ça qu'on veut le faire. Quand vous avez créé votre commande comme ça. Bien sûr à l'intérieur évidemment vous aurez accès à plein de choses. Ici on a tout à fait la possibilité de venir récupérer le container, des services travailler avec, on peut faire tout ce qu'on veut. Donc ça c'est génial parce qu'on peut coder des processus qui vont ben faire tout ce qu'on a envie de faire en PHP classique sauf que on le fera au console et pourquoi pas on pourra même venir écrire dans des dossiers, dans des fichiers, là on fait ce qu'on veut. On est libre de faire ce qu'on a envie de faire, c'est des commandes Symfony. Alors, maintenant si je recharge « bin/console », qu'est-ce qu'il va se passer ? Et ben regardez ici, c'est automatique, ça était scanné par le framework et ajouté automatiquement aux commandes, j'ai accès à ma commande « my:first », voilà c'est génial, ça veut dire je peux la lancer « my:first ». Et là on me dit OK, tout fonctionne. Qu'est-ce que vous voulez que je vous dis de plus, ça fonctionne c'est comme ça qu'on crée de commande, ce n'est pas plus compliqué que ça. Il suffit simplement de venir créer une commande, d'étendre le « ContainerAwareCommand », de faire une fonction de configuration, bien sûr bon on pourra mettre plein de trucs dedans. et d'avoir une fonction d'exécution. Alors, rien ne vous empêche cette fonction d'exécution de la mettre à la fin. Et de faire pas mal de choses au-dessus de constituer ah, ni plus ni moins ah, vous ferez l'appel dans « execute() » à une première fonction qui viendra à travailler. On peut se faire des commandes en mode objet et d'ailleurs je vous conseille de faire des commandes en mode objet. Je vous conseille d'ailleurs de faire ici des « private » qui vont être une « private », par exemple « input » comme ça et puis une « private output » comme ça. Ça c'est vraiment super et dans l'exécution ici de dire directement que « this=input=$input » et « this=output=$output » comme ça, vous n'avez pas besoin de le passer à chaque fois dans toutes vos fonctions. Petite astuce assez gratuit, ça ne mange pas du pain. C'est vraiment hyper intéressant de faire comme ça parce que du coup vous pourrez utiliser votre « this=output » pour faire des « output » partout vous en avez besoin, dans votre code. Pensez-y, ça c'est bien, ça permet de ne pas surcharger le code et surtout pas faire des injections dans des fonctions supplémentaires à chaque fois. Sachant que ça marche de la même manière. Il n'y a aucun problème avec ça on peut tout à fait travailler au format objet.

Découvrir Symfony3

​Prenez en main Symfony3 pour développer des applications riches. Apprenez à créer des routes et des contrôleurs, créez des formulaires, sauvegardez des données, etc.

3h27 (45 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :7 avr. 2016
Durée :3h27 (45 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !