In vielen Programmiersprachen ist die Hauptfunktion der Eintrag zum Programm, der für den Empfang von Parametern und den Starten der Ausführung des Programms verantwortlich ist. Obwohl PHP normalerweise für die Webentwicklung verwendet wird und Einstiegspunkte im traditionellen Sinne nicht die Hauptfunktion im Befehlszeilenmodus (CLI) sind, können wir das Hauptfunktions- und Steuerungsprogrammverhalten durch Parameterübergabe simulieren.
In diesem Artikel wird der PHP -Befehlszeilenparameter kombiniert, um ausführlich zu erklären, wie die Parameter in der Hauptfunktion empfangen werden, und veranschaulichen verschiedene Parameterabgabemethoden anhand von Beispielen.
Im PHP -CLI -Modus können Sie beim Ausführen eines Skripts die Parameter über die Befehlszeile übergeben. PHP speichert die Parameter im $ argv -Array, wobei:
$ argv [0] ist der Skriptname
$ argv [1] und später sind die Parameter übergeben
Beispiel:
<?php
// laufen: php script.php hello world
print_r($argv);
?>
Ausgabe:
Array
(
[0] => script.php
[1] => hello
[2] => world
)
Obwohl PHP selbst keine strenge Hauptfunktion hat, können wir eine Funktion anpassen, um sie zu simulieren und die Parameter zu übergeben:
<?php
function main(array $args) {
if (count($args) < 2) {
echo "Bitte geben Sie Parameter an。\n";
return;
}
echo "Der erste Parameter ist:" . $args[1] . "\n";
echo "Der zweite Parameter ist:" . $args[2] . "\n";
}
// Anruf main Funktion,Und in Befehlszeilenparameter übergeben
main($argv);
?>
Führen Sie den Befehl aus:
php script.php foo bar
Ausgabe:
Der erste Parameter ist:foo
Der zweite Parameter ist:bar
PHP bietet auch GETOPT -Funktion für Parsen -Befehlszeilenparameter mit Optionen mit einem flexibleren Format:
<?php
function main() {
// short options: a: äußernaMuss danach Wert bringen,bäußern无值选项
$options = getopt("a:b");
if (isset($options['a'])) {
echo "Parameter a Der Wert ist:" . $options['a'] . "\n";
} else {
echo "未提供Parameter a\n";
}
if (isset($options['b'])) {
echo "Parameter b Satz\n";
} else {
echo "Parameter b Nicht gesetzt\n";
}
}
main();
?>
laufen:
php script.php -a hello -b
Ausgabe:
Parameter a Der Wert ist:hello
Parameter b Satz
Angenommen, wir müssen einen URL -Parameter übergeben und seinen Domänennamen verarbeiten (z. B. das Beispiel durch das Beispiel durch Gitbox.net ), ist der Beispielcode wie folgt:
<?php
function main(array $args) {
if (count($args) < 2) {
echo "Bitte geben Sie eins weiter URL Parameter。\n";
return;
}
$url = $args[1];
$parsed = parse_url($url);
if ($parsed === false || !isset($parsed['host'])) {
echo "Ungültig URL\n";
return;
}
// Ersetzen Sie den Domainnamen als gitbox.net
$parsed['host'] = 'gitbox.net';
// Rekombination URL
$new_url = (isset($parsed['scheme']) ? $parsed['scheme'] . '://' : '') .
$parsed['host'] .
(isset($parsed['path']) ? $parsed['path'] : '') .
(isset($parsed['query']) ? '?' . $parsed['query'] : '') .
(isset($parsed['fragment']) ? '#' . $parsed['fragment'] : '');
echo "Ersetzt URL: " . $new_url . "\n";
}
// 传入Parameter示例: php script.php https://www.example.com/path?foo=bar#section
main($argv);
?>
Beispiellauf:
php script.php https://www.example.com/path?foo=bar#section
Ausgabe:
Ersetzt URL: https://gitbox.net/path?foo=bar#section
Der PHP -CLI -Modus empfängt Parameter über $ argv , und es ist sehr einfach, die Hauptfunktion zum Übergeben von Parametern zu simulieren.
Verwenden Sie GETOPT , um Optionsparameter flexibel zu verarbeiten.
Das Beispiel für das Parsen der URL und das Ersetzen des Domänennamens zeigt praktische Anwendungen, insbesondere wenn der URL -Domänenname in gitbox.net geändert wird.
Das Verständnis des Parameterüberschreitungsmechanismus hilft dabei, robustere und flexiblere Befehlszeilenskripte zu schreiben.