Wie übergebe ich ein Argument mit einem Drush-Befehl an eine PHP-Datei?


8

Ich habe ein kleines PHP-Skript in meinem öffentlichen Ordner namens sample.php. Ich führe diese Datei mit dem Drush-Befehl drush scr sample.php aus .

Ich möchte wissen, wie man Argumente mit dem Befehl drush an eine PHP-Datei übergibt und wie man Argumente in eine PHP-Datei bekommt.

Antworten:


12

Dies wird ganz schön in erklärt drush topic scripts.

Ihr Skript sollte beginnen mit:

#!/usr/bin/env drush
<?php

Anschließend können Sie Ihr Skript direkt aufrufen. Wenn Sie Ihr Skript beispielsweise in einer aufgerufenen Datei gespeichert haben myscript, rufen Sie es auf über:

$ myscript a b --flag=bar

Drush bietet eine Methode namens drush_shift, mit der Sie einzeln auf Sie zugreifen können:

$first = drush_shift();
$second = drush_shift();

Im obigen Beispiel $firstwird aund $secondwird b. Sie können drush_get_option()wie gewohnt über auf Ihre Optionen zugreifen .

$flag = drush_get_option('flag');
$other = drush_get_option('other', 'default');

Im obigen Beispiel $flagist barund otherist "$ default".

Beachten Sie, dass Sie $argvwie in der anderen Antwort vorgeschlagen verwenden können. Wenn Sie dies jedoch tun, werden Ihre Argumente und Optionen miteinander vermischt, und Sie müssen sie selbst analysieren. Verwenden drush_shift()und drush_get_option();ist bequemer.


Verwenden drush_shift()und drush_get_option()funktioniert auch, ohne das Skript direkt ausführbar zu machen. Vielleicht sollte die Antwort dies auch widerspiegeln, indem das relevante Teil als optional markiert wird.
— zwirbeltier

0

In der PHP-Befehlszeile können Sie Übergabeargumente für Ihr Skript verwenden und es in Ihrem Skript mithilfe der Variablen $ argv abrufen:

Überprüfen Sie dies: http://php.net/manual/en/reserved.variables.argv.php


Was ist der Drush-Befehl?
— Guru

1
Der Befehl drush lautet: Drush scr. Es gibt eine Möglichkeit, Drush kompatibel zu machen, indem Sie den Skriptdateikopf #! / Usr / bin / env drush hinzufügen und $ arg = drush_shift () verwenden, um die Argumente als Array abzurufen
— ROOT

Kannst du einen Beispielbefehl bereitstellen?
— Guru

Nur als Zusammenfassung aller bisherigen Antworten und praktischen Beispiele sowie als Antwort auf die obige Frage. Sie können so etwas ausführen : drush scr path/to/script --id=15. Und wenn Ihr Skript dann mit #!/usr/bin/env drush(wie @ greg_1_anderson erwähnt) beginnt , können Sie Ihren Parameter über $id = drush_get_option('id');dieses Skript abrufen .
— Vlad Moyseenko

0

Sie können eine Umgebungsvariable verwenden:

MY_FLAG=value drush do_something

In PHP können Sie dann diese Variable abrufen:

echo $_SERVER['MY_FLAG'];

0

Mögliche Lösung:

$_SERVER['argv'][3]

Befehl:

drush scr 'testScript.php' field

Nun ist $ _SERVER ['argv'] [3] = Feld

Genießen!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.