Inhaltsverzeichnis
Was ist eine Komponente?
Komponenten vs. Frameworks
Komponenten verwenden
Packagist
Composer
Beispielprojekt
Komponenten installieren
Autoloading
Code schreiben
Heim Backend-Entwicklung PHP-Tutorial Eine kurze Diskussion über PHP-Komponenten, Frameworks und Composer

Eine kurze Diskussion über PHP-Komponenten, Frameworks und Composer

Apr 23, 2019 am 09:18 AM
composer php框架

Dieser Artikel stellt hauptsächlich PHP-Komponenten, Frameworks und Composer vor. Er hat einen gewissen Lernwert und interessierte Freunde können mehr darüber erfahren.

Was ist eine Komponente?

Eine Komponente ist eine Reihe gepackter Codes, eine Reihe verwandter Klassen, Schnittstellen und Merkmale, die uns bei der Lösung eines bestimmten Problems in PHP-Anwendungen helfen. Wenn Ihre PHP-Anwendung beispielsweise HTTP-Anfragen senden und empfangen muss, kann dies mithilfe vorgefertigter Komponenten wie guzzle/guzzle implementiert werden. Wir verwenden Komponenten nicht, um bereits implementierte Funktionen erneut zu implementieren, sondern um mehr Zeit für die Erreichung der langfristigen Ziele des Projekts aufzuwenden.

Ausgezeichnete PHP-Komponenten weisen die folgenden Eigenschaften auf:

  • Einzelne Funktion: Konzentrieren Sie sich auf die Lösung eines Problems und verwenden Sie einfache Schnittstellen, um Funktionen zu kapseln
  • Klein: klein und exquisit , enthält nur den minimalen Code, der zur Lösung eines Problems erforderlich ist
  • Kooperation: PHP-Komponenten können gut miteinander zusammenarbeiten und werden zur Umsetzung großer Projekte kombiniert
  • Gute Tests: Es bietet Tests selbst und Es gibt genügend Testabdeckung
  • Vollständige Dokumentation: Es sollte eine vollständige Dokumentation bereitgestellt werden, damit Entwickler sie einfach installieren, verstehen und verwenden können

Komponenten vs. Frameworks

Wenn wir wählen Ein Framework. Es erfordert viel, in die Tools dieses Frameworks zu investieren. Das Framework bietet normalerweise viele Tools, aber wenn es kein Tool bereitstellt, das wir benötigen, wird der Schmerz auf uns übertragen, und wir müssen es finden Integrieren Sie eine benutzerdefinierte PHP-Bibliothek. Die Integration von Drittanbietercode in ein Framework kann schwierig sein, da der Drittanbietercode und das Framework möglicherweise nicht dieselben Schnittstellen verwenden.

Bei der Auswahl eines Frameworks konzentrieren wir uns auf die Zukunft des Frameworks, aber wer kann garantieren, dass ein bestimmtes Framework immer das beste Werkzeug für eine bestimmte Aufgabe ist? Große Projekte, die es schon seit vielen Jahren gibt, müssen gut funktionieren und ständig Anpassungen vornehmen. Wenn Sie das falsche PHP-Framework wählen, ist dies möglicherweise nicht möglich. Ältere PHP-Frameworks können aufgrund fehlender Community-Unterstützung langsam oder veraltet sein. Diese älteren Frameworks werden häufig mit prozeduralem Code anstelle von modernem objektorientiertem Code und einigen der neuen Funktionen von PHP geschrieben. Kurz gesagt, bei der Entscheidung, ob PHP verwendet werden soll Rahmen, Es gibt viele Dinge zu beachten.

Glücklicherweise hat Laravel in Bezug auf diese Bedenken gut abgeschnitten, sodass es sich von vielen PHP-Frameworks abheben kann. In gewisser Weise ist Laravel auch ein komponentenbasiertes Entwicklungsframework (die Kernkomponente ist seine eigene Illuminate-Bibliothek). (Die Funktionsimplementierung basiert stark auf Komponenten von Drittanbietern.) Im Vergleich zu Symfony ist der Einstieg einfacher und bietet daher sowohl Skalierbarkeit als auch Benutzerfreundlichkeit. Allerdings weist Laravel auch einige Mängel auf. Beispielsweise können die eigenen Komponenten von Laravel nicht einfach entkoppelt und außerhalb des Laravel-Frameworks verwendet werden (aber ich glaube, dass sich diese Situation verbessern wird, da beispielsweise die Datenbank- und Warteschlangenkomponenten entkoppelt werden können). Zusammengenommen ist Laravel immer noch ein hervorragendes Framework, das uns helfen kann, schnell leistungsstarke Anwendungen zu erstellen.

Sollten wir also Komponenten oder Frameworks verwenden? Die Antwort lautet: Verwenden Sie das richtige Tool für die richtige Sache. Wenn Sie mit einigen PHP-Komponenten schnell kleine Projekte implementieren können, können Sie von den vereinbarten Richtlinien und Strukturen profitieren Verwenden Sie dann ein Framework (wenn Sie sich nicht sicher sind, welches Framework Sie verwenden sollen, dann entscheiden Sie sich für Laravel. Die Verwendung eines Frameworks kann die Entwicklung des Projekts steuern und beschleunigen.)

Komponenten verwenden

Packagist

Wir suchen nach PHP-Komponenten in Packagist. Auf dieser Website werden PHP-Komponenten gesammelt.

Eine kurze Diskussion über PHP-Komponenten, Frameworks und Composer

Wenn wir beispielsweise eine http-Komponente zum Senden und Empfangen von HTTP-Nachrichten verwenden möchten, suchen Sie im Suchfeld nach http. Das erste Ergebnis, das wir erhalten, ist Guzzle. also benutze es.

Composer

Packagist ist eine Community zum Finden von PHP-Komponenten und Composer ist ein Tool zum Installieren von PHP-Komponenten. Composer ist ein Abhängigkeitsmanager für PHP. Er wird auf der Befehlszeile ausgeführt. Sie teilen Composer mit, welche Komponenten Sie benötigen, und Composer lädt diese Komponenten automatisch herunter.

Composer und Packagist arbeiten eng zusammen. Wenn Sie Composer mitteilen, dass Sie die guzzlehttp/guzzle-Komponente verwenden möchten, erhält Composer die guzzlehttp/guzzle-Komponente von Packagist. Suchen Sie die Warehouse-Adresse dieser Komponente und bestimmen Sie, welche Version zu verwenden und auch die Abhängigkeiten dieser Komponente herauszufinden, und laden Sie dann die guzzlehttp/guzzle-Komponente und ihre Abhängigkeiten in Ihr Projekt herunter.

Darüber hinaus generiert Composer automatisch Autoloader, die den PSR-Standards für alle PHP-Komponenten im Projekt entsprechen, wodurch das Abhängigkeitsmanagement und das automatische Laden effektiv abstrahiert werden. Daher ist Composer für die PHP-Community am wichtigsten. Es gibt keine solchen Es ist nicht übertrieben, an die schmerzhaften Tage zu denken, als wir include, require und spl_autoload_register verwenden mussten, um das automatische Laden manuell zu implementieren.

Bezüglich der Installation und Verwendung von Composer werde ich hier nicht näher darauf eingehen. Bitte beziehen Sie sich auf die chinesische Website von Composer.

Beispielprojekt

Nachfolgend verwenden wir ein Beispielprojekt, um zu demonstrieren, wie man Composer und Komponenten zum Entwickeln einer PHP-Anwendung verwendet. Die Funktion dieser Anwendung besteht darin, die URL in einer CSV-Datei zu scannen, um tote Links zu finden. Die Anwendung sendet an jede URL eine HTTP-Anfrage. Wenn der zurückgegebene HTTP-Statuscode größer oder gleich 400 ist, wird der tote Link an die Standardausgabe gesendet. Dies ist eine Befehlszeilenanwendung. Nach der Entwicklung führen wir dieses Skript aus, übergeben den Pfad der CSV-Datei und zeigen die Liste der toten Links in der Standardausgabe an.

Komponenten installieren

Bevor wir beginnen, werfen wir einen Blick darauf, welche Aufgaben mit vorhandenen PHP-Komponenten gelöst werden können: Wir benötigen eine Komponente, die die Daten der CSV-Datei iterativ verarbeiten kann, und außerdem Fügen Sie der CSV-Datei Daten hinzu. Jede URL sendet eine HTTP-Anfrage. Daher benötigen Sie auch eine Komponente, die HTTP-Anfragen senden und die HTTP-Antwort überprüfen kann.

Nachdem wir Packagist durchsucht hatten, fanden wir zwei Komponenten: guzzlehttp/guzzle und league/csv. Erstere wird zum Verarbeiten von HTTP-Nachrichten und letztere zum Verarbeiten von CSV-Daten verwendet. Als nächstes führen wir den folgenden Befehl auf der obersten Ebene des Projekts aus:

composer require guzzlehttp/guzzle
composer require league/csv
Nach dem Login kopieren

Composer installiert die Abhängigkeiten im vendor-Verzeichnis des Stammverzeichnisses. Nachdem die Installation abgeschlossen ist, composer.json und composer.lock Dateien werden im Stammverzeichnis generiert:

Eine kurze Diskussion über PHP-Komponenten, Frameworks und Composer

composer.lockDie Datei listet alle vom Projekt verwendeten PHP-Komponenten sowie die spezifischen Versionsnummern auf Die Komponenten werden dadurch tatsächlich gesperrt, sodass nur bestimmte Versionen von PHP-Komponenten verwendet werden können. Dies hat den Vorteil, dass Composer die in dieser Datei aufgeführte spezifische Version herunterlädt, unabhängig von der neuesten in Packagist verfügbaren Version. Sie sollten die composer.lock-Datei der Versionskontrolle unterziehen, damit die Teammitglieder dieselbe PHP-Version verwenden wie Sie. Wenn die PHP-Komponentenversionen, die von der lokalen Entwicklung und dem Server verwendet werden, identisch sind, können Fehler, die durch unterschiedliche Komponentenversionen verursacht werden, minimiert werden.

Wenn Sie wirklich die neueste Version der Komponente herunterladen und aktualisieren möchten composer.lock, können Sie den Befehl composer update verwenden.

Autoloading

Als nächstes schreiben wir den Anwendungscode, erstellen eine scan.php-Datei im Stammverzeichnis und verwenden dann require oben in der Datei, um den von Composer erstellten Autoloader zu importieren :

require 'vendor/autoload.php';
Nach dem Login kopieren

Der von Composer erstellte Autoloader ist eigentlich eine Datei mit dem Namen autoload.php, die im Verzeichnis vendor gespeichert ist. Wenn Composer jede PHP-Komponente herunterlädt, überprüft er die Datei composer.json jeder Komponente . Bestimmen Sie, wie die Komponente geladen werden soll. Nachdem Sie diese Informationen erhalten haben, erstellt Composer einen lokalen Autoloader für die Komponente, der dem PSR-Standard entspricht. Auf diese Weise können wir jede PHP-Komponente im Projekt instanziieren und diese Komponenten werden bei Bedarf automatisch geladen.

Code schreiben

Nachfolgend verwenden wir formell Guzzle- und CSV-Komponenten, um scan.php-Code zu schreiben:

//使用composer自动加载器
require 'vendor/autoload.php';

//实例Guzzle Http客户端
$client = new GuzzleHttp\Client();

//打开并迭代处理CSV
$csv = League\Csv\Reader::createFromPath($argv[1]);
foreach ($csv as $csvRow) {
    try {
        //发送HTTP GET请求
        $httpResponse = $client->get($csvRow[0]);

        //检查HTTP响应的状态码
        if($httpResponse->getStatusCode() >= 400) {
            throw new Exception();
        }
    } catch (Exception $e) {
            //把死链发给标准输出
            echo $csvRow[0] . PHP_EOL;
    }
}
Nach dem Login kopieren

Nachfolgend fügen wir einige URLs in urls.csv hinzu, eine pro Zeile. und Mindestens einer ist ein toter Link:

Eine kurze Diskussion über PHP-Komponenten, Frameworks und Composer

Öffnen Sie dann das Terminal und führen Sie das scan.php-Skript aus:

php scan.php urls.csv
Nach dem Login kopieren

Wir haben zwei Parameter übergeben, den Das erste ist der Pfad zur Skriptdatei scan.php und das andere ist der Pfad zur CSV-Datei. Die Ausgabe lautet wie folgt:

Eine kurze Diskussion über PHP-Komponenten, Frameworks und Composer

Zugehöriges Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über PHP-Komponenten, Frameworks und Composer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vergleich der Vor- und Nachteile von PHP-Frameworks: Welches ist besser? Vergleich der Vor- und Nachteile von PHP-Frameworks: Welches ist besser? Jun 04, 2024 pm 03:36 PM

Die Wahl des PHP-Frameworks hängt von den Projektanforderungen und Entwicklerfähigkeiten ab: Laravel: reich an Funktionen und aktiver Community, weist jedoch eine steile Lernkurve und einen hohen Leistungsaufwand auf. CodeIgniter: Leicht und einfach zu erweitern, verfügt jedoch über eingeschränkte Funktionalität und weniger Dokumentation. Symfony: Modulare, starke Community, aber komplexe Leistungsprobleme. ZendFramework: für Unternehmen geeignet, stabil und zuverlässig, aber umfangreich und teuer in der Lizenzierung. Schlank: Mikro-Framework, schnell, aber mit eingeschränkter Funktionalität und einer steilen Lernkurve.

Leistungsunterschiede von PHP-Frameworks in verschiedenen Entwicklungsumgebungen Leistungsunterschiede von PHP-Frameworks in verschiedenen Entwicklungsumgebungen Jun 05, 2024 pm 08:57 PM

Es gibt Unterschiede in der Leistung von PHP-Frameworks in verschiedenen Entwicklungsumgebungen. Entwicklungsumgebungen (z. B. lokale Apache-Server) leiden aufgrund von Faktoren wie einer geringeren lokalen Serverleistung und Debugging-Tools unter einer geringeren Framework-Leistung. Im Gegensatz dazu ermöglicht eine Produktionsumgebung (z. B. ein voll funktionsfähiger Produktionsserver) mit leistungsstärkeren Servern und optimierten Konfigurationen eine deutlich bessere Leistung des Frameworks.

PHP-Frameworks und Microservices: Cloud-native Bereitstellung und Containerisierung PHP-Frameworks und Microservices: Cloud-native Bereitstellung und Containerisierung Jun 04, 2024 pm 12:48 PM

Vorteile der Kombination des PHP-Frameworks mit Microservices: Skalierbarkeit: Einfaches Erweitern der Anwendung, Hinzufügen neuer Funktionen oder Bewältigung höherer Lasten. Flexibilität: Microservices werden unabhängig voneinander bereitgestellt und gewartet, was die Durchführung von Änderungen und Aktualisierungen erleichtert. Hohe Verfügbarkeit: Der Ausfall eines Microservices hat keine Auswirkungen auf andere Teile und sorgt so für eine höhere Verfügbarkeit. Praxisbeispiel: Bereitstellung von Microservices mit Laravel und Kubernetes Schritte: Erstellen Sie ein Laravel-Projekt. Definieren Sie einen Microservice-Controller. Erstellen Sie eine Docker-Datei. Erstellen Sie ein Kubernetes-Manifest. Stellen Sie Microservices bereit. Testen Sie Microservices.

Wie geht Composer mit der Datei „composer.lock' um? Wie geht Composer mit der Datei „composer.lock' um? Jun 03, 2024 pm 04:40 PM

Composer verwaltet Abhängigkeiten mithilfe der Datei „composer.lock“, die alle installierten Abhängigkeiten und ihre genauen Versionen aufzeichnet und so die Konsistenz gewährleistet und Versionskonflikte vermeidet. Verbessern Sie die Leistung, ohne wiederholt nach Paketen suchen zu müssen. Verfolgen Sie Änderungen und zeichnen Sie installierte Abhängigkeitsversionen nach jedem Installationsbefehl auf.

Integration von PHP-Frameworks mit DevOps: die Zukunft der Automatisierung und Agilität Integration von PHP-Frameworks mit DevOps: die Zukunft der Automatisierung und Agilität Jun 05, 2024 pm 09:18 PM

Die Integration von PHP-Frameworks mit DevOps kann die Effizienz und Agilität verbessern: mühsame Aufgaben automatisieren, Personal entlasten, damit es sich auf strategische Aufgaben konzentrieren kann, Release-Zyklen verkürzen, die Markteinführungszeit verkürzen, die Codequalität verbessern, Fehler reduzieren, die funktionsübergreifende Teamzusammenarbeit verbessern und Ausfälle verhindern Entwicklungs- und Betriebssilos

Das beste PHP-Framework für Microservice-Architektur: Leistung und Effizienz Das beste PHP-Framework für Microservice-Architektur: Leistung und Effizienz Jun 03, 2024 pm 08:27 PM

Bestes PHP-Microservices-Framework: Symfony: Flexibilität, Leistung und Skalierbarkeit, Bereitstellung einer Reihe von Komponenten zum Erstellen von Microservices. Laravel: konzentriert sich auf Effizienz und Testbarkeit, bietet eine saubere API-Schnittstelle und unterstützt zustandslose Dienste. Schlank: minimalistisch, schnell, bietet ein einfaches Routing-System und optionalen Midbody Builder, geeignet für den Aufbau von Hochleistungs-APIs.

PHP-Frameworks und künstliche Intelligenz: Ein Entwicklerhandbuch PHP-Frameworks und künstliche Intelligenz: Ein Entwicklerhandbuch Jun 04, 2024 pm 12:47 PM

Verwenden Sie ein PHP-Framework zur Integration künstlicher Intelligenz (KI), um die Integration von KI in Webanwendungen zu vereinfachen: Laravel: leichtgewichtig, effizient und leistungsstark. CodeIgniter: Einfach und benutzerfreundlich, geeignet für kleine Anwendungen. ZendFramework: Framework auf Unternehmensebene mit vollständigen Funktionen. KI-Integrationsmethode: Modell des maschinellen Lernens: Führen Sie bestimmte Aufgaben aus. AIAPI: Bietet vorgefertigte Funktionen. KI-Bibliothek: übernimmt KI-Aufgaben.

Welches PHP-Framework bietet die umfassendste Erweiterungsbibliothek für eine schnelle Entwicklung? Welches PHP-Framework bietet die umfassendste Erweiterungsbibliothek für eine schnelle Entwicklung? Jun 04, 2024 am 10:45 AM

Die PHP-Framework-Erweiterungsbibliothek stellt vier Frameworks zur Auswahl: Laravel: Bekannt für sein umfangreiches Ökosystem und Pakete von Drittanbietern, bietet es Authentifizierung, Routing, Validierung und andere Erweiterungen. Symfony: Hochmodular, erweitert die Funktionalität durch wiederverwendbare „Bundles“, die Bereiche wie Authentifizierung und Formulare abdecken. CodeIgniter: Leicht und leistungsstark, bietet praktische Erweiterungen wie Datenbankverbindung und Formularvalidierung. ZendFramework: Leistungsstarke Funktionen auf Unternehmensebene mit Erweiterungen wie Authentifizierung, Datenbankverbindung, RESTfulAPI-Unterstützung usw.

See all articles