Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

小云云
小云云Original
2017-12-18 16:15:011866Durchsuche

Wenn Sie ein Web Entwicklungsingenieur sind, müssen Sie PHP verwendet haben, um viele Web Anwendungen zu entwickeln. Aber wissen Sie, wie Sie mit PHP schnell eine Befehlszeilenanwendung (Tool) erstellen? Im Folgenden zeige ich Ihnen, wie Sie mit PHP und einem berühmten Composer-Erweiterungspaket – Symphony/Console – eine Befehlszeilenanwendung erstellen .

Symphony/Console ist ein Composer Erweiterungspaket, das mit PHP verwaltet wird und den Prozess der Erstellung einer schönen, testbaren PHP Befehlszeilenanwendung vereinfacht, die sofort einsatzbereite Funktionen bietet, wie z (optionale/erforderliche) Parameterspezifikation und Optionsspezifikation (unter Verwendung des --Symbols). Beginnen wir also gemeinsam mit der Erstellung unserer Anwendung.

Wie üblich werden wir eine „Hello World“-Konsolenanwendung erstellen, diese jedoch leicht modifizieren, sodass sie eine benutzerdefinierte Begrüßung (anstelle von „Hello“) unterstützt und jemanden nach Belieben begrüßen kann (anstelle von „World“).

Diese Hello World-App verfügt über die folgende Funktionalität:

  1. stellt uns einen separaten greet (Begrüßungs-)Befehl zur Verfügung, den wir für die Interaktion mit dem App-Programm verwenden Interaktion.

  2. greet kann einen optionalen Parameter (name) akzeptieren, um die Person auszudrucken, die begrüßt wird (Standard ist Welt).

  3. greet kann eine Option (--say) akzeptieren, um die Begrüßung zu ändern (Standard ist Hallo).

  4. Wenn wir Parameter oder Optionen angeben, gibt das Programm standardmäßig eine Hello World-Meldung aus.

So erstellen Sie eine Befehlszeilenanwendung mit PHP

  • Erstellen Sie ein neues Verzeichnis für unser Projekt und cdgeben Sie es ein:

    mkdir hello-world-app && cd hello-world-app
  • Verwenden Sie Composer, um die Konsolenkomponente in unser Projekt zu integrieren

    composer require symfony/console
  • Erstellen Sie dann einen Einstiegspunkt für Ihre Anwendung, die PHP-Erweiterung Nicht erforderlich, da wir diese Datei ausführbar machen und die Umgebung in der Datei selbst angeben.

    touch HelloWorld
    chmod +X HelloWorld
  • Fügen Sie den folgenden Code zur HelloWorld-Datei hinzu (ich werde jede Zeile später mit Anmerkungen versehen) und führen Sie HelloWorld diese Anwendung in Ihrem Terminal aus.

    #!/usr/bin/env php
    <?php
    require __DIR__.&#39;/vendor/autoload.php&#39;;
    
    use Symfony\Component\Console\Application;
    use Symfony\Component\Console\Input\InputArgument;
    use Symfony\Component\Console\Input\InputInterface;
    use Symfony\Component\Console\Input\InputOption;
    use Symfony\Component\Console\Output\OutputInterface;
    
    (new Application(&#39;Hello World&#39;, &#39;1.0.0&#39;))
          ->register('greet')
          ->addArgument('name', InputArgument::OPTIONAL, 'Name of the person')
          ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting')
          ->setCode(function (InputInterface $input, OutputInterface $output) {
                  
            $name = $input->getArgument('name');
            $greeting = $input->getOption('say');
    
            if (!empty($name) && !empty($greeting)) {
                return $output->writeln("<info>$greeting $name!</info>");
            } else if (!empty($name)) {
                return $output->writeln("<info>Hello $name!</info>");
            } else if (!empty($greeting)) {
                return $output->writeln("<info>$greeting World!</info>");
            } else {
                return $output->writeln("<info>Hello World!</info>");
            }
          })
          ->getApplication()
          ->run();

Sehen Sie, Sie haben Ihr eigenes HelloWorldKonsolenprogramm
So erstellen Sie schnell Befehlszeilenanwendungen mit PHP
wenn nichts angegeben ist. Beim Befehl gibt HelloWorld einen Bildschirm mit Informationen aus Standardmäßig bietet die Komponente

Symfony Console mehrere Optionen und Befehle, die sofort für die Anwendung verfügbar sind, wie z. B. help, list und --version

Erklärung von der Inhalt dieser magischen Datei

OK, werfen wir einen Blick auf den Code in unserer HelloWorld-Datei.

  1. Wir führen autoload.php ein, um das von composer bereitgestellte automatische Laden und die verschiedenen von der Konsolenkomponente bereitgestellten Funktionen zu verwenden.

InputInterface und OutputInterface vereinfachen die Eingabe- und Ausgabefunktionen der Anwendung, InputArgument und InputOption helfen uns bei der Handhabung der an uns übergebenen Eingabe- und Ausgabefunktionen HelloWorld-Anwendung. Optionen und Parameter.

require __DIR__.'/vendor/autoload.php'; 

use Symfony\Component\Console\Application; 
use Symfony\Component\Console\Input\InputArgument; 
use Symfony\Component\Console\Input\InputInterface; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Output\OutputInterface;
  1. symphony/consoleInstanziieren Sie eine neue Anwendung mit Namen HelloWorld (v1.0.0) und registrieren Sie unseren greet-Befehl.

    (new Application('Hello World', '1.0.0'))
        ->register('greet')
  2. Wir fügen einen optionalen name-Parameter (addArgument()) hinzu und stellen eine kurze Beschreibung des Parameters bereit. Dann fügen wir mit dieser addOption()-Methode eine say-Option hinzu. Beachten Sie, dass Optionen immer optional sind. Sie können jedoch einen zu übergebenden Wert angeben oder ihn einfach als Referenz auf einen booleschen Bezeichner verwenden. Der Code in der Methode

    ->addArgument('name', InputArgument::OPTIONAL, 'Name of the person') 
    ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting')
  3. setCode() enthält die Hauptlogik unserer Anwendung, die basierend auf den übergebenen Parametern und Optionen eine Begrüßung an das Terminal druckt. Wir hören auf das $input-Objekt und verwenden die Hilfsmethoden getArgument() und getOption(), um die an greet übergebenen Optionen und Parameter abzurufen. Dann müssen wir nur noch prüfen, welche Parameter oder Optionen übergeben werden, und entsprechend reagieren (mit das $output-Objekt) gibt eine Begrüßung an die Konsolenausgabe aus. Diese writeln()-Methode kann Text anhand von Tags formatieren, z. B. indem info, error und warning in verschiedenen Farben ausgegeben werden.

    ->setCode(function (InputInterface $input, OutputInterface $output) {
        $name = $input->getArgument('name');
        $greeting = $input->getOption('say');
    
        if (!empty($name) && !empty($greeting)) {
            return $output->writeln("<info>$greeting $name!</info>");
        } else if (!empty($name)) {
            return $output->writeln("<info>Hello $name!</info>");
        } else if (!empty($greeting)) {
            return $output->writeln("<info>$greeting World!</info>");
        } else {
            return $output->writeln("<info>Hello World!</info>");
        }
      })
  4. Zuletzt booten wir die 并调用他的-Methode der Anwendung, sodass sie jederzeit bereit ist, greet-Befehle zu empfangen und zu verarbeiten.

    ->getApplication()
    ->run();

Jetzt schauen wir uns unser HelloWorld-Programm in einem Beispiel an

  1. greetKeine Parameter und Optionen übergeben

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

  1. greet hat ein optionales name-Argument

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

  1. greetPassen Sie Ihre Begrüßung mit der Option say an

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

  1. Schließlich greetBegrüßungen anpassen und Personen begrüßen

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP


Über den Autor

Programmentwickler, nicht Beschränkt auf Sprache und Technologie, beschäftigt sich derzeit hauptsächlich mit PHP und Front-End-Entwicklung unter Verwendung von Laravel und VueJs. Eignung und Genügsamkeit sind die niemals endenden Ziele.

Persönliche Website: https://www.linganmin.cn

Anmerkung des Übersetzers: Einige Links und Bildadressen in diesem Artikel wurden durch inländische Adressen ersetzt. Bitte korrigieren Sie mich, wenn es Übersetzungen gibt Fehler.
Viel Spaß beim Codieren!


Ursprüngliche Adresse: Wie erstelle ich eine Befehlszeilenanwendung mit PHP?

Wenn Sie ein Web Entwicklungsingenieur sind, müssen SieViele PHPAnwendungen entwickelt. Aber wissen Sie, wie Sie mit Web schnell eine Befehlszeilenanwendung (Tool) erstellen? Im Folgenden zeige ich Ihnen, wie Sie mit PHP und einem berühmten PHP-Erweiterungspaket – Symphony/Console – eine Befehlszeilenanwendung erstellen . Composer

Symphony/Console ist ein

Erweiterungspaket, das mit Composer verwaltet wird und den Prozess der Erstellung einer schönen, testbaren PHP Befehlszeilenanwendung vereinfacht, die sofort einsatzbereite Funktionen bietet, wie z (optionale/erforderliche) Parameterspezifikation und Optionsspezifikation (unter Verwendung des PHP-Symbols). Beginnen wir also gemeinsam mit der Erstellung unserer Anwendung. -

Wie üblich werden wir eine „Hello World“-Konsolenanwendung erstellen, diese jedoch leicht modifizieren, sodass sie eine benutzerdefinierte Begrüßung (anstelle von „Hello“) unterstützt und jemanden nach Belieben begrüßen kann (anstelle von „World“).

Diese Hello World-App verfügt über die folgende Funktionalität:

  1. stellt uns einen separaten

    (Begrüßungs-)Befehl zur Verfügung, den wir für die Interaktion mit dem App-Programm verwenden Interaktion. greet

  2. kann einen optionalen Parameter (greet) akzeptieren, um die Person auszudrucken, die begrüßt wird (Standard ist Welt). name

  3. kann eine Option (greet) akzeptieren, um die Begrüßung zu ändern (Standard ist Hallo). --say

  4. Wenn wir Parameter oder Optionen angeben, gibt das Programm standardmäßig eine

    -Meldung aus. Hello World

So erstellen Sie eine Befehlszeilenanwendung mit PHP

  • Erstellen Sie ein neues Verzeichnis für unser Projekt und

    geben Sie es ein: cd

    mkdir hello-world-app && cd hello-world-app
  • Verwenden Sie Composer, um die Konsolenkomponente in unser Projekt zu integrieren

    composer require symfony/console
  • Erstellen Sie dann einen Einstiegspunkt für Ihre Anwendung, die PHP-Erweiterung Nicht erforderlich, da wir diese Datei ausführbar machen und die Umgebung in der Datei selbst angeben.

    touch HelloWorld
    chmod +X HelloWorld
  • Fügen Sie den folgenden Code zur

    -Datei hinzu (ich werde jede Zeile später mit Anmerkungen versehen) und führen Sie HelloWorld diese Anwendung in Ihrem Terminal aus.HelloWorld

    #!/usr/bin/env php
    <?php
    require __DIR__.&#39;/vendor/autoload.php&#39;;
    
    use Symfony\Component\Console\Application;
    use Symfony\Component\Console\Input\InputArgument;
    use Symfony\Component\Console\Input\InputInterface;
    use Symfony\Component\Console\Input\InputOption;
    use Symfony\Component\Console\Output\OutputInterface;
    
    (new Application(&#39;Hello World&#39;, &#39;1.0.0&#39;))
          ->register('greet')
          ->addArgument('name', InputArgument::OPTIONAL, 'Name of the person')
          ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting')
          ->setCode(function (InputInterface $input, OutputInterface $output) {
                  
            $name = $input->getArgument('name');
            $greeting = $input->getOption('say');
    
            if (!empty($name) && !empty($greeting)) {
                return $output->writeln("<info>$greeting $name!</info>");
            } else if (!empty($name)) {
                return $output->writeln("<info>Hello $name!</info>");
            } else if (!empty($greeting)) {
                return $output->writeln("<info>$greeting World!</info>");
            } else {
                return $output->writeln("<info>Hello World!</info>");
            }
          })
          ->getApplication()
          ->run();
Sehen Sie, Sie haben Ihr eigenes

KonsolenprogrammHelloWorld
So erstellen Sie schnell Befehlszeilenanwendungen mit PHP wenn nichts angegeben ist. Beim Befehl gibt HelloWorld einen Bildschirm mit Informationen aus Standardmäßig bietet die Komponente

mehrere Optionen und Befehle, die sofort für die Anwendung verfügbar sind, wie z. B. Symfony Console, help und list --version

Erklärung von der Inhalt dieser magischen Datei

OK, werfen wir einen Blick auf den Code in unserer

-Datei. HelloWorld

  1. Wir führen

    ein, um das von autoload.php bereitgestellte automatische Laden und die verschiedenen von der Konsolenkomponente bereitgestellten Funktionen zu verwenden. composer

und InputInterface vereinfachen die Eingabe- und Ausgabefunktionen der Anwendung, OutputInterface und InputArgument helfen uns bei der Handhabung der an uns übergebenen Eingabe- und Ausgabefunktionen HelloWorld-Anwendung. Optionen und Parameter. InputOption

require __DIR__.'/vendor/autoload.php'; 

use Symfony\Component\Console\Application; 
use Symfony\Component\Console\Input\InputArgument; 
use Symfony\Component\Console\Input\InputInterface; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Output\OutputInterface;
  1. Instanziieren Sie eine neue Anwendung mit Namen symphony/console und registrieren Sie unseren HelloWorld (v1.0.0) -Befehl. greet

    (new Application('Hello World', '1.0.0'))
        ->register('greet')
  2. 我们添加一个可选的name参数(addArgument()),并提供参数的简短描述。然后,我们使用这个addOption()方法添加一个say选项。请注意,选项始终是可选的,但您可以指定要传递的值,也可以仅仅将其用作指boolean标识。

    ->addArgument('name', InputArgument::OPTIONAL, 'Name of the person') 
    ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting')
  3. setCode()方法中的代码会包含我们应用程序的主逻辑,它会根据传递的参数和选项打印一个问候语到终端。我们监听$input对象,使用getArgument()getOption()辅助方法获取传递给greet的选项和参数,然后,我们只需要检查传递了哪些参数或者选项,并相应的(使用$output对象)向控制台输出打印问候语。这个writeln()方法可以根据标签格式化文本,比如输出不同颜色的info,errorwarning

    ->setCode(function (InputInterface $input, OutputInterface $output) {
        $name = $input->getArgument('name');
        $greeting = $input->getOption('say');
    
        if (!empty($name) && !empty($greeting)) {
            return $output->writeln("<info>$greeting $name!</info>");
        } else if (!empty($name)) {
            return $output->writeln("<info>Hello $name!</info>");
        } else if (!empty($greeting)) {
            return $output->writeln("<info>$greeting World!</info>");
        } else {
            return $output->writeln("<info>Hello World!</info>");
        }
      })
  4. 最后我们引导应用程序并调用他的方法,以便他做好随时接收和处理greet命令。

    ->getApplication()
    ->run();

现在让我们在实例中看看我们HelloWorld程序

  1. greet不传递任何参数和选项

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

  1. greet有一个可选的name参数

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

  1. greet使用say选项自定义问候语

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

  1. 最后,greet自定义问候语和问候人

So erstellen Sie schnell Befehlszeilenanwendungen mit PHP

相关推荐:

PHP命令行

关于webpack命令行的详细介绍

关于获取命令行参数的7篇文章推荐


Das obige ist der detaillierte Inhalt vonSo erstellen Sie schnell Befehlszeilenanwendungen mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn