Neuanleitung Symfony Console - CLI Php für Uneingeweihte!
Feb 10, 2025 pm 02:06 PM
Kernpunkte
- Symfony Console ist ein eigenst?ndiges Paket, das ein einfaches Framework zum Erstellen von Befehlszeilen -Tools bietet, die für sich wiederholende Aufgaben wie Datenmigration, Importierung oder Erstellung von Cron -Jobs nützlich sind.
- Um einen neuen Befehl zu erstellen, muss die Datei ausführbar sein. Dies kann durch das Erstellen einer Konsolendatei im Projektstammverzeichnis erstellt werden, sicherstellen, dass die Datei ausführbar ist und die Konsolenanwendung definiert wird.
- Sie k?nnen die Befehlsklasse von Symfony verwenden, um Befehle zu testen, die spezielle Eingangs- und Ausgabeklassen bereitstellen, um Befehle ohne die Befehlszeile zu testen.
- Symfony Console wird mit Composer (dem Abh?ngigkeitsmanagement -Tool in PHP) installiert. Es bietet eine einfache API, um Befehle für Befehlszeilen zu erstellen und Farbanzeigen, Fortschrittsbalken, Tabellen und andere interaktive Funktionen der Ausgabe zu unterstützen.
Dieser Artikel wurde am 24. Mai 2017 aktualisiert und bietet eine umfassendere Einführung in dieses wichtige moderne Tool.
"Konsolenkomponente vereinfacht das Erstellen einer sch?nen und überprüfbaren Befehlszeilenschnittstelle." Dies ist die Begrü?ungsnachricht, die wir sehen, wenn wir die Seite Symfony Console Component Tools besuchen.
Als Softwareentwickler müssen wir h?ufig Befehlszeilen -Tools verwenden. Diese Tools sind nützlich, wenn wir eine Art sich wiederholende Aufgaben ausführen müssen (z. B. Daten migrieren, Importe ausführen oder Cron -Jobs erstellen).
Das Symfony Console Component Tool bietet uns ein einfaches Framework, um unsere eigenen Befehlszeilen -Tools zu erstellen.
Im Gegensatz zu vielen Komponenten in Symfony ist dies ein eigenst?ndiges Paket, das von Laravels Handwerk und vielen anderen berühmten PHP -Paketen verwendet wird.
Um die Alternativen zur Symfony -Konsole zu erfahren, siehe unser Vergleichsartikel: Schlacht der PHP -Konsole!
Installation
composer require symfony/consoleWichtige Informationen zum Komponisten finden Sie hier.
Erstellen Sie einen neuen Befehl
Um einen neuen Befehl zu erstellen, müssen wir sicherstellen, dass unsere Datei ausführbar ist. Lassen Sie uns dazu eine Konsolendatei im Projektstammverzeichnis erstellen. Diese Datei fungiert als unser Befehlsmanager.
Stellen Sie jetzt sicher, dass die Datei ausführbar ist.
touch console
Stellen Sie dann sicher, dass sich zu Beginn unserer Datei Shebang befindet. Shebang ist eine Abfolge von Zeichen (Daumenmarke, gefolgt von Ausrufezeichen), die am Anfang des Skripts erscheint. Wenn Shebang existiert, wechselt exec () in die ausführbare Datei, die nach dem Ausführen von Shebang angegeben wurde. In unserem Beispiel wird es als PHP -Skript ausgeführt.
chmod 755 consoleLassen Sie uns nach
unsere Konsolenanwendung definieren. Die erste Iteration unseres Befehlsmanagers sieht folgenderma?en aus:
Schauen wir uns genauer an. Zuerst laden wir automatisch alle Abh?ngigkeiten und importieren dann das Anwendungspaket aus der Konsolenkomponente. Danach erstellen wir eine neue Instanz der Anwendung und führen sie aus.
#!/usr/bin/env php <?php require_once __DIR__ . '/vendor/autoload.php'; use Symfony\Component\Console\Application; $app = new Application(); $app->run();
Wenn wir ./console
verwenden, um das Skript auszuführen, sollten wir die folgende Hilfe -Nachricht erhalten:
Dies liegt daran, dass wir noch keine Befehle registriert haben, und wir haben gerade ihr grundlegendes Framework erstellt.
Erstellen wir unser Skript und registrieren Sie es in unserem neu erstellten Befehlsmanager.
Für dieses spezielle Beispiel werden wir zwei einfache Befehle implementieren: einen für Hashing -Zeichenfolgen und die andere, um zu best?tigen, dass der Hash zur angegebenen Zeichenfolge geh?rt.
wir werden den /src
-Fordner unserer Hash.php -Klasse mit dem folgenden Inhalt platzieren:
composer require symfony/console
Es ist Zeit, unsere Befehle zu erstellen. Erstellen wir eine neue PHP -Datei namens HashCommand.php.
Diese Klasse erweitert die Befehlsklasse von Symfony und implementieren Sie Konfigurationsmethoden. Diese Methoden sind für unsere Befehle von entscheidender Bedeutung, weil sie den Befehlen sagen, wie sie aussehen und sich verhalten.
Der vonausgefüllte Befehl lautet wie folgt:
touch console
Im Abschnitt Konfiguration ist die SetName -Methode die Art und Weise, wie wir den Befehl aufrufen, setDescription ist die Beschreibung des Befehls, und Addargument ist die Anweisung, die wir erkl?ren, dass der Befehl einen Parameter mit dem Namen Passwort akzeptiert und er erforderlich ist.
In dem Abschnitt Ausführen greifen wir über die Getargument -Funktion auf die Parameter zu und haben sie anschlie?end mit unserer Hash -Klasse. Schlie?lich verwenden wir die Schreibmethode von OutputInterface, um das Ergebnis auf den Bildschirm zu drucken.
Wenn wir unseren Befehl so ausführen, werden wir nichts sehen. Dies liegt daran, dass wir immer noch einen sehr wichtigen Schritt fehlen. Wir müssen unsere Befehle noch in der Konsole registrieren.
chmod 755 console
Nachdem Sie den Befehl in der Konsole registriert haben, führen wir ihn aus.
Wenn wir den Befehl ./console
erneut ausführen, k?nnen wir sehen, dass wir jetzt einen neuen Befehl registriert haben.
lass es uns ausführen:
#!/usr/bin/env php <?php require_once __DIR__ . '/vendor/autoload.php'; use Symfony\Component\Console\Application; $app = new Application(); $app->run();
wir sehen das Endergebnis:
Hash ist das Ergebnis der Anwendung der PHP -Hash () -Methode auf eine SitePoint -Zeichenfolge.
Für die Hash -Best?tigungsfunktion werden wir dieselbe Methode anwenden, aber wir werden zwei Parameter anstelle von einem haben. Eine wird die Zeichenfolge sein, die best?tigt werden muss, und der andere wird der Hash -Wert sein, den wir überprüfen m?chten.
Wir erstellen eine neue Befehlsdatei direkt neben der Hashcommand -Datei. Nennen wir es Best?tigkeitskommand.
<?php namespace Hash; class Hash { /** * 接收一個字符串密碼并對其進行哈希處理。 * * @param string $password * @return string $hash */ public static function hash($password) { return password_hash($password, PASSWORD_DEFAULT); } /** * 驗證哈希是否與給定的密碼相對應(yīng) * * @param string $password * @param string $hash * @return boolean 如果哈希是從密碼生成的 */ public static function checkHash($string, $hash) { if (password_verify($string, $hash)) { return true; } return false; } }
Registrieren Sie den Befehl in der Konsole.
<?php namespace Hash; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Hash\Hash; class HashCommand extends Command { protected function configure() { $this->setName("Hash:Hash") ->setDescription("使用Bcrypt對給定字符串進行哈希處理。") ->addArgument('Password', InputArgument::REQUIRED, '你想要哈希什么?'); } protected function execute(InputInterface $input, OutputInterface $output) { $hash = new Hash(); $input = $input->getArgument('Password'); $result = $hash->hash($input); $output->writeln('你的密碼哈希值:' . $result); } }
testen
In Bezug auf das Testen bietet uns Symfony einige bequeme Werkzeuge. Die nützlichste ist die Befehlsklasse, da sie spezielle Eingangs- und Ausgabeklassen bereitstellt, um unsere Befehle ohne die Befehlszeile zu testen.
Verwenden wir die CommandTester -Klasse, um einen Test für unseren Befehl Hash: Hash zu implementieren.
Erstellen wir zuerst einen /src
Ordner auf dem gleichen Niveau wie unser. /tests
composer require symfony/consoleWir laden unsere Befehle zuerst mit der Anwendungsklasse. Dann instanziieren wir einen neuen Kommando. Mit COMPORTTESTER k?nnen wir konfigurieren, wie wir unsere Befehle aufrufen m?chten. Der letzte Schritt besteht darin, die Methode GetDisplay () zu verwenden, um das Ausführungsergebnis mit dem erwarteten Ergebnis zu vergleichen.
Die Methode
getDisplay () speichert das Ergebnis unserer Befehlsausführung, genau wie wir in der Befehlszeile sehen.
Schlussfolgerung
Wir haben gerade zwei verschiedene Befehle mit der Symfony -Konsolenkomponente erstellt. Wir sehen auch eine gute M?glichkeit, diese Befehle zu testen. Ich schlage vor, Sie betrachten die verschiedenen Optionen und Funktionen der Komponenten und geben uns im Kommentarbereich unten ein Feedback zu Ihrem Experiment.M?chten Sie weiter fortgeschrittene Tutorials auf Symfony Console auf SitePoint sehen? Bitte sagen Sie es uns!
Der gesamte Code, den wir in diesem Artikel geschrieben haben, finden Sie in GitHub.
Symfony Console FAQWie installiere ich Symfony Console?
Symfony Console ist eine Komponente des Symfony -Frameworks, das mit Composer (dem Abh?ngigkeitsmanagement -Tool in PHP) installiert werden kann. Um Symfony Console zu installieren, müssen Sie den folgenden Befehl im Terminal ausführen:
. In diesem Befehl wird die Symfony Console -Komponente in Ihr Projekt heruntergeladen und installiert. composer require symfony/console
Symfony Console bietet eine einfache API, um Befehlszeilen zu erstellen. Diese Befehle k?nnen für Cron -Jobs, Migrationen, Importe oder jeden anderen Aufgabentyp verwendet werden, der über die Befehlszeile ausgeführt werden kann. Es unterstützt auch Farbanzeigen, Fortschrittsbalken, Tabellen und andere interaktive Funktionen des Ausgangs.
Wie erstelle ich einen neuen Befehl in Symfony Console?
Um einen neuen Befehl zu erstellen, müssen Sie eine neue Klasse erstellen, die die SymfonyComponentConsoleCommand -Klasse erweitert. In dieser Klasse definieren Sie den Namen, die Beschreibung, die Parameter und die Optionen des Befehls in der Konfigurationsmethode. Die Ausführungsmethode enth?lt die Logik des Befehls.
Wie führe ich Befehle in Symfony Console aus?
Um den Befehl auszuführen, müssen Sie das Skript
gefolgt vom Namen des Befehls verwenden. Wenn Sie beispielsweise einen Befehl namens bin/console
haben, k?nnen Sie ihn mit dem folgenden Befehl ausführen: app:my-command
. bin/console app:my-command
Symfony -Konsole kann in Verbindung mit der Doktrin (der Datenbankabstraktionschicht in Symfony) verwendet werden, um Datenbankmigrationen zu verwalten. Sie k?nnen einen neuen Befehl erstellen, der die erforderlichen SQL -Abfragen zur Migration Ihrer Datenbank ausführt.
Wie kann ich Befehlsparameter und -optionen in der Symfony -Konsole behandeln?
Befehlsparameter und -optionen k?nnen in der Methode der Konfiguration der Befehlsklasse definiert werden. Sie k?nnen das Getargument- und GetOption -Methoden verwenden, um die Werte dieser Parameter und Optionen in der Ausführungsmethode abzurufen.
Wie kann ich die Ausgabe in Symfony Console anzeigen?
Symfony Console bietet verschiedene M?glichkeiten, die Ausgabe anzuzeigen. Sie k?nnen mit der WriteLN -Methode eine Textzeile anzeigen, die Schreibmethode verwenden, um Text anzuzeigen (keine Zeilenumbrüche am Ende) und die Tabellenmethode zur Anzeige der Tabelle.
Wie kann ich Fehler in der Symfony -Konsole umgehen?
Fehler k?nnen behandelt werden, indem Ausnahmen vergeben werden. Symfony Console f?ngt diese Ausnahmen an und zeigt eine Fehlermeldung an. Sie k?nnen auch die Exit -Methode verwenden, um die Ausführung des Befehls zu stoppen und den Exit -Code zurückzugeben.
Wie testet ich Befehle in Symfony Console?
Symfony Console bietet eine Befehlsklasse, mit der Befehle getestet werden k?nnen. Sie k?nnen diese Klasse verwenden, um Befehle mit spezifischen Parametern und Optionen auszuführen und den Ausgangs- und Beenden -Code zu gründen.
Wie kann man Symfony Console im Symfony -Projekt verwenden?
Im Symfony -Projekt k?nnen Sie das Skript bin/console
verwenden, um Befehle auszuführen. Sie k?nnen auch Ihre eigenen Befehle erstellen, indem Sie eine neue Klasse erstellen, die die SymfonyComponentConSolecommand -Klasse im Verzeichnis src/Command
erweitert.
Das obige ist der detaillierte Inhalt vonNeuanleitung Symfony Console - CLI Php für Uneingeweihte!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile
