Bringen Sie Ihnen bei, wie Sie Composer zum Verwalten von Abhängigkeiten verwenden

藏色散人
Freigeben: 2020-08-07 13:23:46
nach vorne
2870 Leute haben es durchsucht

In der folgenden Tutorial-Kolumne von Composer erfahren Sie, wie Sie Composer zum Verwalten von Abhängigkeiten verwenden. Ich hoffe, dass es für Freunde hilfreich ist, die es benötigen!

Bringen Sie Ihnen bei, wie Sie Composer zum Verwalten von Abhängigkeiten verwenden

composer war ursprünglich ein Tool zur Verwaltung von Paketabhängigkeiten in Symfony, dem PHP-Framework. Da es einfach und benutzerfreundlich ist, ist es mittlerweile ein unabhängiges Open-Source-Projekt. Viele Frameworks und Bibliotheken können mittlerweile mit Composer installiert und verwaltet werden.

Tatsächlich gibt es in PHP seit langem ein solches Tool zur Verwaltung von Paketabhängigkeiten, nämlich PEAR. Allerdings sind die Einstellungen von PEAR zu kompliziert und es ist schwierig, Abhängigkeiten für einzelne Projekte festzulegen, sodass Composer mittlerweile bei der Öffentlichkeit beliebt ist.

Diese Einführung richtet sich nur an Benutzer und deckt daher nicht die Teile ab, die Paketentwickler kennen müssen.

* Installation

Wenn Sie ein Windows-Benutzer sind, müssen Sie nur die Installationsdatei herunterladen und die Installation ausführen:

https://getcomposer.org/Composer-Setup.exe
Nach dem Login kopieren

Wenn Sie manuell installieren möchten, können Sie die Anweisungen auf der offiziellen Website befolgen:

http://getcomposer.org/doc/00-intro.md#installation-windows
Nach dem Login kopieren

Wenn Sie ein UNIX-ähnlicher Systembenutzer sind, können Sie es über diesen Befehl installieren: (curl muss zuerst installiert werden)

curl -sS https://getcomposer.org/installer | php
Nach dem Login kopieren

Das Installationsprogramm überprüft die PHP-Einstellungen und lädt dann Composer.phar in das aktuelle Verzeichnis herunter. Um Composer auszuführen, können Sie

php composer.phar
Nach dem Login kopieren

ausführen oder ihn einfach in eine ausführbare Datei

>mv composer.phar composer
>chmod +x composer
Nach dem Login kopieren

ändern und dann ./composer ausführen.

Wenn Sie es jedoch in verschiedenen Arbeitsverzeichnissen benötigen und kein Problem mit der Ausführungsberechtigung besteht, können Sie die Datei auch direkt nach /usr/local/bin kopieren.

* Abhängigkeiten festlegen

Wenn Sie Composer in einem Projekt verwenden, müssen Sie zunächst eine Composer.json-Datei generieren, die das zu verwendende Paket und die Version angibt. Wenn Sie beispielsweise phpmailer zum Versenden eines Briefes verwenden müssen, können Sie dies wie folgt angeben:

{
"require": {
"phpmailer/phpmailer": "~5.2.7"
}
}
Nach dem Login kopieren

und dann die Installation ausführen:

eng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing phpmailer/phpmailer (v5.2.7)
    Downloading: 100%         
Writing lock file
Generating autoload files
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$
Nach dem Login kopieren

Die Installation ist abgeschlossen. Schauen Sie sich an, was installiert ist:

Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ ls -l
total 16
-rw-r--r--  1 fillano  staff    66 10 11 18:15 composer.json
-rw-r--r--  1 fillano  staff  2330 10 11 18:16 composer.lock
drwxr-xr-x  5 fillano  staff   170 10 11 18:16 vendor
Nach dem Login kopieren

Anhand der Dateien im Verzeichnis können wir feststellen, dass ursprünglich nur die Datei „composer.json“ vorhanden war. Nach der Installation gibt es eine zusätzliche Datei „composer.lock“ und ein Herstellerverzeichnis. Werfen wir zunächst einen Blick auf den Inhalt von Composer.lock:

Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ cat composer.lock
{
    "_readme": [
        "This file locks the dependencies of your project to a known state",
        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
    ],
    "hash": "065c23f92d5ae579cb91beff67f41196",
    "packages": [
        {
            "name": "phpmailer/phpmailer",
            "version": "v5.2.7",
            "source": {
                "type": "git",
                "url": "https://github.com/PHPMailer/PHPMailer.git",
                "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8717a79565b2c0ed67f851d70e1949febdf3b226",
                "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226",
                "shasum": ""
            },
            "require": {
                "php": ">=5.0.0"
            },
            "require-dev": {
                "phpdocumentor/phpdocumentor": "*",
                "phpunit/phpunit": "*"
            },
            "type": "library",
            "autoload": {
                "classmap": [
                    "class.phpmailer.php",
                    "class.pop3.php",
                    "class.smtp.php"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "LGPL-2.1"
            ],
            "authors": [
....下略
Nach dem Login kopieren

Es sieht aus wie die Informationen über das Paket, das gerade installiert wurde.

Schauen Sie sich noch einmal an, was sich im Vendor-Verzeichnis befindet:

Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ tree vendor
vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_real.php
│   └── installed.json
└── phpmailer
    └── phpmailer
        ├── LICENSE
        ├── PHPMailerAutoload.php
        ├── README.md
        ├── changelog.md
        ├── class.phpmailer.php
        ├── class.pop3.php
        ├── class.smtp.php
        ├── composer.json
        ├── docs
        │   ├── Callback_function_notes.txt
        │   ├── DomainKeys_notes.txt
        │   ├── Note_for_SMTP_debugging.txt
        │   ├── extending.html
        │   ├── faq.html
        │   ├── generatedocs.sh
        │   └── pop3_article.txt
...下略
Nach dem Login kopieren

Es scheint, dass es neben dem phpmailer-Verzeichnis, in dem phpmailer installiert ist, hauptsächlich autoload.php-Dateien und Composer-Verzeichnisse gibt.

Es stellt sich heraus, dass Sie zum Laden eines über Composer installierten Pakets zuerst auf die Datei „vendor/autoload.php“ verweisen müssen und dann phpmailer verwenden können. Schreiben Sie ein einfaches Programm, um es zu testen:

<?php
require &#39;vendor/autoload.php&#39;;
$phpmailer = new PHPMailer;
Nach dem Login kopieren

Nach der Ausführung treten keine Fehler auf, was bedeutet, dass phpmailer normal geladen werden kann ... Als Nächstes werfen wir einen Blick auf die Verwendung dieser Dateien.

* Composer.json

Für Benutzer wird diese Datei hauptsächlich zur Verwaltung von Abhängigkeiten verwendet. Fügen Sie einfach ein Objekt zur Datei im Attribut „require“ hinzu, wobei der Attributname der Paketname und der Wert die Version ist. Der Paketname ist in zwei Teile unterteilt, der erste Teil ist der Hersteller und der zweite Teil ist der tatsächliche Paketname, getrennt durch „“. Es gibt mehrere Regeln für Versionen:

  • Geben Sie direkt die Versionsnummer an, z. B. 2.7.3.

  • Nach der Angabe der Hauptversionsnummer verwenden Sie „*“, um die Nebenversionsnummer anzugeben, z. B. 2.7.* die Versionsnummer ist größer oder gleich 2.7.0, Versionen kleiner als 2.8.0

  • verwenden Sie >, >=, !=, <=, < usw. vor der Versionsnummer, um dies anzuzeigen Diese Vergleichsoperatoren werden verwendet, um die Versionsnummernregel anzugeben, und mehrere Regeln werden durch "," getrennt. Verwenden Sie „~“ vor der Versionsnummer, um die Version vor der nächsten Änderung der Versionsnummer anzugeben. ~2.7 bedeutet beispielsweise, dass die Version größer oder gleich 2.7 und kleiner als 3.0 ist.

  • Nach der Versionsnummer können Sie auch verschiedene Stabilitätsflags hinzufügen, z. B. 2.7.*@beta. Die verwendbaren Flags sind: dev, alpha, beta, RC, Stable

  • Führen Sie nach Angabe der Version die Composer-Installation aus, und die neueste Version des Pakets wird gemäß den angegebenen Versionsregeln installiert.

  • Tatsächlich ist jedes Verzeichnis mit einer Composer.json-Datei auch das Stammverzeichnis eines Pakets. Wenn Sie es jedoch zu einem Kit für andere machen möchten, müssen Sie noch viele Einstellungen hinzufügen, die den Rahmen dieser Diskussion sprengen würden.

* Composer.lock

Nach der ersten Installation des Pakets wird diese Datei generiert, die die Informationen des installierten Pakets aufzeichnet. Die eigentliche Funktion dieser Datei ist: Wenn sich diese Datei im Verzeichnis befindet, wird bei der Installation nicht nach einer aktualisierten Version gesucht, sondern diese entsprechend der in dieser Datei aufgezeichneten Version installiert. Dieses Design ist wichtig, da die neue Version der Suite wahrscheinlich nicht mit der aktuell verwendeten Version kompatibel ist. Wenn nicht dieselbe Version verwendet wird, ist es schwierig, die Stabilität des Systems sicherzustellen. In der Vergangenheit konnte es bei der Verwendung von Pear zum Verwalten von Paketen zu Tragödien kommen, die durch Upgrades verursacht wurden, wenn man nicht aufpasste. Solange diese Datei zur Versionsverwaltung hinzugefügt wird, verfügen außerdem alle Entwicklerverzeichnisse über diese Datei, sodass die von allen verwendeten Paketversionen konsistent sind. Dies kann die Probleme reduzieren, die durch die Verwendung verschiedener Paketversionen während der Entwicklung entstehen. Probleme mit der Programmkompatibilität.

* Anbieterverzeichnis

所有套件都会放置在这个目录,并且依照/的目录结构来组织。

* vendor/autoload.php
Nach dem Login kopieren

只要引用这个档案,就可以载入套件中所有对外公开的类别。基本上每个套件都会定义自己的autoload规则,在安装时,composer会把这些规则加入,这样透过autoload.php就可以直接使用所有已安装的类别。

=====

从这些地方可以看到,Composer这个套件管理工具,在设计上已经做了很周密的考量,只需要简单指定要使用的套件及版本,一个指令就可以安装完毕,引用一个胆案之后就能使用,这样真的非常方便。所以目前几乎所有的程式库以及Framework,应该都逐渐在套用这个工具了。未来在开发PHP程式,恐怕最基本的工具也就是composer。

Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen bei, wie Sie Composer zum Verwalten von Abhängigkeiten verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:ithome
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage