ホームページ > 開発ツール > composer > Composer を使用して依存関係を管理する方法を教える

Composer を使用して依存関係を管理する方法を教える

藏色散人
リリース: 2020-08-07 13:23:46
転載
2913 人が閲覧しました

composer の次のチュートリアル コラムでは、Composer を使用して依存関係を管理する方法を紹介します。困っている友人の役に立てば幸いです。

Composer を使用して依存関係を管理する方法を教える

composer はもともと、PHP フレームワークである Symfony のパッケージの依存関係を管理するために設計されたツールでしたが、シンプルで使いやすいため、現在は独立したオープンソース プロジェクトになりました。 。多くのフレームワークとライブラリは、composer を使用してインストールおよび管理できるようになりました。

実は、PHP には、以前からそのようなパッケージの依存関係管理ツールが存在していました。それが PEAR です。しかし、PEARは設定が複雑すぎて、プロジェクトごとに依存関係を設定するのが難しいため、現在ではComposerが広く愛用されています。

この紹介はユーザーのみを対象としているため、パッケージ開発者が知っておく必要がある部分はカバーされません。

* インストール

Windows ユーザーの場合は、インストール ファイルをダウンロードしてインストールを実行するだけです。

https://getcomposer.org/Composer-Setup.exe
ログイン後にコピー

必要な場合は、手動でインストールするには、公式 Web サイトのガイドラインを参照してください:

http://getcomposer.org/doc/00-intro.md#installation-windows
ログイン後にコピー

UNIX Like システムのユーザーの場合は、次のコマンドでインストールできます: (curl を最初にインストールする必要があります)

curl -sS https://getcomposer.org/installer | php
ログイン後にコピー

インストール プログラムは PHP 設定を確認し、composer.phar を現在のディレクトリにダウンロードします。 Composer を実行するには、

php composer.phar
ログイン後にコピー

を実行するか、単に実行可能ファイル

>mv composer.phar composer
>chmod +x composer
ログイン後にコピー

に変更してから ./composer を実行します。

ただし、ファイルを別の作業ディレクトリに置く必要があり、実行権限に問題がない場合は、ファイルを /usr/local/bin に直接コピーすることもできます。

#* 依存関係の設定

プロジェクトで Composer を使用する場合は、まず、使用するパッケージとバージョンを指定する Composer.json ファイルを生成する必要があります。たとえば、phpmailer を使用してレターを送信する必要がある場合、

{
"require": {
"phpmailer/phpmailer": "~5.2.7"
}
}
ログイン後にコピー

のように指定して、インストールを実行します:

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$
ログイン後にコピー

でインストールが完了します。何がインストールされているか見てみましょう:

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
ログイン後にコピー

ディレクトリ内のファイルによると、元々は、composer.json ファイルのみが存在していたことがわかります。インストール後は、composer.lock ファイルとベンダーが存在します。ディレクトリ。まず、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": [
....下略
ログイン後にコピー

は、インストールされたばかりのパッケージに関する情報のように見えます。

ベンダー ディレクトリの内容を見てみましょう:

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
...下略
ログイン後にコピー

phpmailer がインストールされている phpmailer ディレクトリに加えて、主に autoload.php ファイルとコンポーザー ディレクトリがあるようです。

composer を介してインストールされたパッケージをロードするには、まず、vendor/autoload.php ファイルを参照する必要があり、その後、phpmailer を使用できることがわかりました。テストするための簡単なプログラムを作成します。

<?php
require &#39;vendor/autoload.php&#39;;
$phpmailer = new PHPMailer;
ログイン後にコピー

実行後にエラーは発生しません。これは、phpmailer が正常にロードできることを意味します... 次に、これらのファイルの使用方法を見てみましょう。

*composer.json

ユーザーにとって、このファイルは主に依存関係を維持するために使用されます。ファイルの「require」属性にオブジェクトを追加するだけです。属性名はパッケージ名、値はバージョンです。パッケージ名は 2 つの部分に分かれており、最初の部分はベンダー、2 番目の部分は実際のパッケージ名であり、「\」で区切られています。バージョンにはいくつかのルールがあります。

  • バージョン番号を直接指定します (例: 2.7.3

  • メイン バージョン番号を指定した後、マイナー バージョン番号を指定するには、「*」を使用します。たとえば、2.7.* は、バージョン番号が 2.7.0 以上であることを意味します。2.8.0 未満のバージョン

  • ## を使用します。 、>=、!=、<=、<バージョン番号の前で待機するということは、これらの比較演算子を使用してバージョン番号ルールを指定することを意味します。複数のルールを使用して、「,」
  • # で区切ることができます。

    #バージョン番号の前に「~」を使用して、次のバージョン番号が変更される前のバージョンを示します。たとえば、~2.7 は、バージョンが 2.7 以上 3.0 未満であることを意味します。
  • バージョン番号の後に、2.7.* などのさまざまな安定性フラグを追加することもできます。 @ベータ。使用できるフラグは次のとおりです: dev、alpha、beta、RC、stable
  • バージョンを指定した後、composer install を実行すると、パッケージの最新バージョンが次のようにインストールされます。指定されたバージョンのルール。
実際、composer.json ファイルのあるすべてのディレクトリは、パッケージのルート ディレクトリでもあります。ただし、他の人が使用できるキットにしたい場合は、依然として多くの設定を追加する必要がありますが、これについてはこの説明の範囲を超えています。

#*composer.lock

パッケージの最初のインストール後、インストールされたパッケージの情報を記録するこのファイルが生成されます。このファイルの実際の機能は、ディレクトリにこのファイルが存在する場合、インストールの実行時に更新されたバージョンを検索せず、このファイルに記録されているバージョンに従ってインストールします。スイートの新しいバージョンは現在使用されているバージョンと互換性がない可能性が高く、同じバージョンを使用しないとシステムの安定性を確保することが困難になるため、この設計は重要です。以前は、pear を使用してパッケージを管理する場合、注意しないと、アップグレードによる悲劇が発生する可能性がありました。 さらに、このファイルがバージョン管理に追加される限り、すべての開発者ディレクトリにもこのファイルが含まれるため、全員が使用するパッケージのバージョンが一貫し、開発中にパッケージを使用する必要性が減ります。バージョンの違いによって引き起こされるプログラムの互換性の問題。

#* ベンダー ディレクトリ

#

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

* vendor/autoload.php
ログイン後にコピー

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

=====

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

以上がComposer を使用して依存関係を管理する方法を教えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:ithome
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート