Maison >développement back-end >tutoriel php >DRUPAL: Comment créer votre propre commande DRUSH
Concepts clés
.drush.inc
(dans votre module), la fonction hook_drush_command()
pour la définition de commande et une fonction de rappel pour exécuter la logique de la commande. drush_get_option()
. DRUSH rationalise la gestion de Drupal à partir du terminal. Tout en offrant des commandes pré-construites (téléchargement du module, activer, mettre à jour), sa véritable puissance réside dans la création de commandes personnalisées. Ce tutoriel montre la construction d'une commande DRUSH pour un module illustratif simple. L'accent est mis sur la structure de commande de Drush, et non sur la fonctionnalité principale du module. Un exemple de code est disponible dans [ce référentiel] (Repository_link_here - Remplacez par un lien réel si disponible).
Notre module d'échantillon
La fonctionnalité du module demo_drush
est une fonction de base:
<code class="language-php">function demo_drush_print_statement() { drupal_set_message(t('Hello world!')); }</code>
Cette fonction sera utilisée pour montrer comment Dush imprime les messages à la console. Nous le modifierons plus tard pour présenter diverses fonctionnalités de commande.
Le fichier de commande DRUSH (demo_drush.drush.inc
)
Créer demo_drush.drush.inc
dans le répertoire de votre module. Dush identifie et charge les fonctions à partir de fichiers se terminant par .drush.inc
.
Crochet de commande et rappel
Drush Command Architecture comprend deux parties principales: l'implémentation hook_drush_command()
(définir les commandes et configurations) et les fonctions de rappel déclenchées par des commandes. Commençons par hook_drush_command()
:
<code class="language-php">/** * Implements hook_drush_command(). */ function drush_demo_drush_command() { $items['drush-demo-command'] = array( 'description' => 'Demonstrates Drush command functionality.', 'aliases' => array('ddc'), ); return $items; }</code>
Ceci définit une commande nommée drush-demo-command
(aliasé comme ddc
). La fonction de rappel (par défaut, drush_drush_demo_command()
) exécute la logique de la commande:
<code class="language-php">/** * Callback for the drush-demo-command command. */ function drush_drush_demo_command() { demo_drush_print_statement(); }</code>
Après avoir effacé le cache Dush (drush cc drush
), en cours d'exécution drush ddc
imprime "Hello World!" à la console.
Arguments et options
Améliorez votre commande avec des arguments (obligatoires) et des options (facultatifs). Ajoutons-les au crochet:
<code class="language-php">function demo_drush_print_statement() { drupal_set_message(t('Hello world!')); }</code>
Maintenant, drush ddc error --repeat=10
définit le type d'instruction sur "Error" et le répète 10 fois. Mise à jour demo_drush_print_statement()
et la fonction de rappel en conséquence:
<code class="language-php">/** * Implements hook_drush_command(). */ function drush_demo_drush_command() { $items['drush-demo-command'] = array( 'description' => 'Demonstrates Drush command functionality.', 'aliases' => array('ddc'), ); return $items; }</code>
Entrée utilisateur
gérer les arguments manquants de manière interactive:
<code class="language-php">/** * Callback for the drush-demo-command command. */ function drush_drush_demo_command() { demo_drush_print_statement(); }</code>
Exemples dans hook_drush_command()
Ajouter des exemples au crochet:
<code class="language-php">... 'arguments' => array( 'type' => 'Statement type (error or success).', ), 'options' => array( 'repeat' => 'Number of statement repeats.', ), ...</code>
Conclusion
Ce tutoriel couvre les bases de la création de commandes DRUSH. Explorez des fonctionnalités avancées telles que les niveaux de bootstrap, les dépendances des modules et la compatibilité des versions de base dans la documentation de l'API DRUSH.
Les questions fréquemment posées (FAQ) (elles sont déjà bien écrites dans l'entrée, pas besoin de les réécrire)
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!