Composer の詳細な紹介

Oct 23, 2017 am 10:50 AM
composer 導入 詳しい

Composer は、PEAR パッケージ マネージャーに代わる非常に人気のあるツールです。

ユーザーにとって、Composer は非常に簡単なコマンドで必要なコード パッケージです。がベンダー ディレクトリにダウンロードされると、開発者はパッケージを導入して使用できるようになります

キーは、プロジェクトによって定義された Composer.json にあり、プロジェクトが依存する必要があるパッケージを定義できます (依存パッケージは他のパッケージに依存する場合があります (これはコンポーネントの利点です)。Composer は必要なものをすべて

の定義内にダウンロードします。 Composer はユーザーにとって非常に便利ですが、その背後にある概念はまだ理解する必要があります。Github の急速な発展のおかげで、PHP 言語はますます現代的になり、より高度なものになってきています。 Composer を理解するには、まずその構造を大まかに理解します。

Composer の構造

Composer コマンド ライン ツール:

これを理解するだけであれば、ユーザー定義の Composer.json を通じて必要なコードをダウンロードします。 Composer を簡単に使用して、それをマスターしましょう いくつかの特定のコマンドで十分です



コードローダーの自動読み込み:

Composer を通じて、開発者は Composer をさまざまな方法で使用できます。その鍵は、PHP の名前空間の概念とその開発にあります。 PSR-4 標準。Composer は、これら 2 つのコード オートローダーを開発しました



Github:

Github を使用すると、PHP 開発者はその上でオープン ソース コードをホストでき、Composer の開発は基本的に Github から始まります。



Packagist:

ユーザーの場合、Composer のコマンドラインツールが使用されますが、コマンドラインツールはユーザーが使用できるパッケージの数をどのようにして知るのでしょうか? Packagist、Packagist は Composer の主要なパッケージ情報リポジトリです。パッケージ開発者は Github で特定のコードをホストし、パッケージ情報を Packagist に送信します。これにより、ユーザーは Composer を介してパッケージ情報を使用できます。 Composer が最終的にコードをダウンロードするとき、Composer.json/Package.json 情報を解析し、最終的に Github リポジトリ上の Composer.json に依存します。ここでは 3 つのタイプが関係します。



Composer.json:
これは Composer のコアであり、Composer のルールも上で説明したものです。最初に使用するときは注意が必要です。

Composer コマンド ライン ツール

composer init

ユーザーは、自分のプロジェクトの下に combos.json を作成してプロジェクトの依存関係パッケージを定義することも、composer init を通じて操作することもできます。

composer install

は最も一般的に使用されるコマンドです。Composer は、ダウンロードしたパッケージをローカルの combos.json インストール パッケージに基づいてプロジェクトのベンダー ディレクトリに配置し、同時にパッケージのバージョン情報をインストールします。バージョンをロックするには、composer.lock に入れます。

実際、インストール中に、composer.lock のバージョンが現在のベンダー ディレクトリ内のコードのバージョンと一致していることが判明した場合、Composer は何もせず、composer.lock の目的を実行します。

composer update

では、パッケージの最新バージョンを入手できるように、composer.lock を更新するにはどうすればよいでしょうか。このコマンドで最新バージョンを更新します

composer config

パッケージを理解することをお勧めします。グローバル設定は COMPOSER_HOME/config.json に保存され、非グローバル設定情報はプロジェクト ディレクトリに保存されます。 config --list -gcomposer config - g Notice-on-install falsecomposer global config bin-dir --absolute

composer create-project

このコマンドは一般的には使用されませんが、個人的には依然として非常に重要だと考えています。プロジェクトのすべての依存関係パッケージをダウンロードするための通常のインストール コマンド このプロジェクトのベンダー ディレクトリに移動します。このコマンドは、すべてのコードとその依存パッケージを 1 つのディレクトリに配置します。これは、通常、パッケージ開発者が git clone コマンドを実行するのと同じです。 Command.

composer global
はこれを使用してバグを修正する可能性があります。

これはグローバル インストール コマンドであり、COMPOSER_HOME ディレクトリで Composer コマンド (インストールや更新など) を実行できます。もちろん、COMPOSER_HOME は $PATH 環境にある必要があります。

たとえば、composer global require fabpot/ を実行します。 php-cs-fixer では、php-cs-fixer コマンド ラインをグローバルに実行できるようになりました。後で更新する場合は、コンポーザーを変更するときに、composer global update

composer dump-autoload

を実行するだけです。プロジェクトの下にある json ファイル、いいえ、更新するには必ずコンポーザー更新コマンドを実行してください。たとえば、このコマンドを使用して (packagist からではなく) ローカルのカスタム パッケージを参照することができます。

composer require

composer require cerdic/css-tidy:1.5.2composer require "ywdblog" を手動または対話的に作成する場合は、このコマンドを使用してパッケージをインストールできます。 /phpcomposer:dev-master"


–prefer-source および –prefer-dist パラメーター

–prefer-dist: 安定したパッケージの場合、通常、Composer のインストールではデフォルトでこのパラメーターが使用され、インストールを高速化することもできます。たとえば、実際にインストールせずに、対応するパッケージを packageist から直接インストールすることができます。

–prefer-source: このパラメーターを使用すると、パッケージのインストール後に Github から直接インストールされます。 、ベンダー ディレクトリには .git 情報も含まれます

composer require "ywdblog/phpcomposer:dev-master" --prefer-source

# Vendor/ywdblog/phpcomposer ディレクトリに .git 情報が含まれます



追加方法Composer へのプロキシ

Composer のダウンロードは、中国では特に遅くなります 2 つの方法で速度を上げることができます

composer config repo.packagistamper "https://packagist.phpcomposer.com"

edit combos.json

" リポジトリ": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com"

}

}


オートローディングコードローダー

composer自体はオートローダーを統合し、 PSR-4、PSR-0、クラスマップ、ファイルの自動ロード。

ここでは、PSR-4 標準に準拠する Composer Reference クラスマップ、ファイル、ローカル コードの使用方法を示す例を示します

composer.json を編集します

"autoload" : { "クラスマップ": ["othsrc/","classsrc.php"]、"ファイル": ["othsrc /filesrc.php"]、"psr-4": {"FooBar": "src"}

}



composer dump-autoload

上記の操作を通じて、PSR-4 の場合、(FooBar 名前空間から) PSR-4 オートローダーを登録するのと同等です


Composer のオートローダーを使用したくない場合は、直接インクルードすることができますVendor/composer/autoload_*.php ファイルを開き、独自のローダーを設定します。

具体的な例は github でホストされていますので、参照してください。


リポジトリ

リポジトリについては、理解する必要はありませんが、マスターすれば、 Composer については、中国語と英語のドキュメントで詳しく説明されています。

基本概念:

Composer は、いくつかのリソース パッケージとパッケージの説明をインストールします。より重要なメタデータの説明は、dist とsource がアーカイブを指し、ソース パッケージの特定のバージョンのデータがパッケージ化されています。開発中のソース。通常はソース コード リポジトリ (git など) です。

リソース ライブラリ:

リソース ライブラリは、パッケージ/バージョンのリストです。

Composer が参照します。プロジェクトに必要なリソース パッケージを見つけるために定義したすべてのリポジトリ (この文は非常に重要です)

Packagist.org はデフォルトで Composer に登録されています (または Packagist として理解されます。org は Composer リソース ライブラリのデフォルトのウェアハウス タイプです)。 )

Composer リソース ライブラリ タイプ

Composer リソース ライブラリには 4 つのタイプが含まれています。デフォルトは、packagist.org で使用されるリソース タイプである Composer タイプです。

それは 1 つを使用します。packages.json ファイルには、すべてのリソース パッケージ メタデータが含まれています。パッケージを pckagist.org に公開すると、システムはデフォルトで package.json を作成しますが、パッケージに対応するファイルが見つかりませんでした。

VCS リソース ライブラリ タイプ

プライベート Composer プライベートをビルドしたい場合たとえば、プロジェクトのcomposer.jsonで次のように定義すると、Github .

{ "repositories": [ { "タイプ": "vcs"、"url": "https://github.com/ywdblog/phpcomposer" } ], "require": { "ywdblog/phpcomposer": "dev-master" } }

composer update を実行すると、Comoser は実際には、pckagist.org ではなく Github からパッケージをダウンロードします。

さらに、パッケージ リソース ライブラリ タイプまたは PEAR リソース ライブラリ タイプを使用する必要がある場合は、一般的に公式ドキュメントを参照してください。 、composer.json.

Composer.json

でnameとversion属性を定義するだけです。

Composer.json については、この記事で何度も言及しています。たとえば、サードパーティ パッケージを使用する場合は、Composer がサードパーティ パッケージをインストールした後、composer.json もローカルで定義する必要があります。どちらも、composer.json と呼ばれますが、その違いは何ですか?

プロジェクトの下に combos.json を定義する場合、このパッケージは ROOT パッケージと呼ばれます。このcomposer.jsonは、プロジェクトに必要な条件を定義します(たとえば、プロジェクトはサードパーティのパッケージに依存する可能性があります)。

composer.jsonの一部のプロパティは、ROOTパッケージでのみ使用できます。 config プロパティは ROOT パッケージでのみ有効です。

リソース パッケージは ROOT ですか? たとえば、ywdblog/phpcomposer を git clone する場合、ローカルの phpcomposer ディレクトリは ROOT パッケージになります。ローカルの phpcomposer ディレクトリにある /phpcomposer の場合、プロジェクト phpcomposer は ROOT パッケージになります

Composer-schema.json について学ぶには、この Web サイトを参照してください。Laravel の combos.json 定義は非常に古典的です。パッケージのバージョンについて

ユーザーがローカルでcomposer.jsonを構成する場合、パッケージの特定のバージョンが必要な場合、ComposerはGithubリポジトリからのタグまたはブランチでのパッケージのダウンロードをサポートします

Githubのタグについては、Packagist。 X.Y.Z、vX.Y.Z、X.Y.Z パッケージ タイプに準拠する、対応するパッケージのバージョンを作成します。つまり、Github にはパッケージの特定のバージョンが 1 つだけありますが、Composer は複数の形式の参照メソッドをサポートしています。

composer require monolog/monolog 1.0.0-RC1

composer require monolog/monolog v1.0.0-RC1

composer require monolog/monolog 1.0.*
composer require monolog/monolog ~1.10


Github 上のブランチの場合、 Packagist は、ブランチ名がバージョンに似ている場合、{ブランチ名}- が作成されます。ブランチ名がバージョン番号に似ていない場合は、パッケージのバージョン番号が作成されます。 dev-{ブランチ名}の形式のバージョン番号

composer require monolog/monolog master-dev

composer require monolog/monolog master.x -dev



概要:

Composerを理解するには、最も重要なことは練習することです最後に、PSR-4 と名前空間を理解することができます。また、プロジェクトを pckagist.org に公開してみることもできます。

以上がComposer の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 Apr 18, 2025 am 09:24 AM

CraftCMSを使用してWebサイトを開発する場合、特にCSSやJavaScriptファイルを頻繁に更新する場合、リソースファイルのキャッシュ問題が発生することがよくあります。古いバージョンのファイルがブラウザによってキャッシュされ、ユーザーが最新の変更を表示しないようにすることがあります。この問題は、ユーザーエクスペリエンスに影響を与えるだけでなく、開発とデバッグの難しさを高めます。最近、プロジェクトで同様のトラブルに遭遇し、いくつかの調査の後、プラグインWiejeben/Craft-Laravel-Mixが見つかりました。

ドクトリンエンティティのシリアル化効率を改善:Sidus/Doctrine-Serializer-Bundleの適用 ドクトリンエンティティのシリアル化効率を改善:Sidus/Doctrine-Serializer-Bundleの適用 Apr 18, 2025 am 11:42 AM

多数の教義エンティティを含むプロジェクトに取り組んでいるとき、私は厳しい問題を抱えていました。エンティティがシリアル化され、脱必要にされるたびに、パフォーマンスは非常に非効率的になり、システムの応答時間が大幅に増加します。複数の最適化方法を試しましたが、うまくいきません。幸いなことに、Sidus/Doctrine-Serializer-Bundleを使用することで、この問題をうまく解決し、プロジェクトのパフォーマンスを大幅に改善しました。

作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨 作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨 Apr 18, 2025 am 11:48 AM

eコマースのWebサイトを開発するとき、私は困難な問題に遭遇しました。ユーザーにパーソナライズされた製品の推奨事項を提供する方法です。当初、私はいくつかの簡単な推奨アルゴリズムを試しましたが、結果は理想的ではなく、ユーザーの満足度も影響を受けました。推奨システムの精度と効率を改善するために、より専門的なソリューションを採用することにしました。最後に、Andres-Montanez/Adcumentations Bundleを介してAndres-Montanez/Bundleをインストールしました。これは、問題を解決しただけでなく、推奨システムのパフォーマンスを大幅に改善しました。次の住所から作曲家を学ぶことができます。

Composerを使用してFecmall Advanced Projectテンプレートをすばやく構築する方法 Composerを使用してFecmall Advanced Projectテンプレートをすばやく構築する方法 Apr 18, 2025 am 11:45 AM

eコマースプラットフォームを開発する場合、適切なフレームワークとツールを選択することが重要です。最近、機能が豊富なeコマースのウェブサイトを構築しようとしていたとき、私は困難な問題に遭遇しました。スケーラブルで完全に機能的なeコマースプラットフォームをすばやく構築する方法です。複数のソリューションを試してみて、FecmallのAdvanced Projectテンプレート(Fecmall/FBBCBase-App-Advanced)を選択することになりました。 Composerを使用することにより、このプロセスは非常にシンプルで効率的になります。作曲家は次のアドレスを通して学ぶことができます:学習アドレス

Composerを使用してLaravelアプリケーションのセキュリティを改善する方法:Wiebenieuwenhuis/Laravel-2FAライブラリのアプリケーション Composerを使用してLaravelアプリケーションのセキュリティを改善する方法:Wiebenieuwenhuis/Laravel-2FAライブラリのアプリケーション Apr 18, 2025 am 11:36 AM

Laravelアプリケーションを開発するとき、私は一般的ではあるが難しい問題に遭遇しました。ユーザーアカウントのセキュリティを改善する方法です。サイバー攻撃の複雑さの増加により、単一のパスワード保護は、ユーザーのデータのセキュリティを確保するのに十分ではなくなりました。いくつかの方法を試しましたが、結果は満足のいくものではありませんでした。最後に、コンポーザーを介してwiebenieuwenhuis/laravel-2FAライブラリをインストールし、アプリケーションに2因子認証(2FA)を大幅に追加し、セキュリティを大幅に改善しました。

作曲家を使用してJSONスキーマの検証の問題を解決する方法 作曲家を使用してJSONスキーマの検証の問題を解決する方法 Apr 18, 2025 am 11:51 AM

Symfonyベースのアプリケーションを開発する際には、JSONデータ形式を効果的に検証する方法を開発する際に、トリッキーな問題を抱えています。最初は、手動検証コードを使用しようとしましたが、これは複雑であるだけでなく、エラーが発生しやすいものでもありました。いくつかの調査の後、私はPtyhard/Json-Schema-Bundleという作曲家パッケージを発見しました。

Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Apr 18, 2025 pm 01:00 PM

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

See all articles