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.

Guru
quelle

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.

greg_1_anderson
quelle
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

WURZEL
quelle
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'];
David Merckx
quelle
0

Mögliche Lösung:

$_SERVER['argv'][3]

Befehl:

drush scr 'testScript.php' field

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

Genießen!

Fedo Peralta
quelle