Composer&Packagist 101

画像



こんにちは、Habr! 今日は、経験豊富なPHP開発者の知り合いについてお話したいと思いますが、初心者、物事-ComposerとPackagistには不可解です。 ここにいる多くの人にとって、このテキストが啓示にならないことは間違いありません。 以下に説明する事項に対処する必要がある人のための資料。



あなたはPHP開発者であり、npmやBundlerなどの優れた依存関係マネージャーが必要ですか? あなたは梨に苦しんでいるのに疲れていますか? また、サイトからライブラリを手動でダウンロードし、すべての依存関係を更新する必要はありませんか? それでは、ComposerとPackagistについて知る時間です。





基本



Composerとは何かを説明することから始め、少し後でPackagistについて説明します。 Composerは当初、プロジェクトレベルのPHPの依存関係マネージャーです。 これは、各プロジェクトが独自のバージョンのライブラリなどを必要とするため、かつて人気のあったナシに苦しむ必要がないことを意味します。 Composerを使用すると、プロジェクトのルートにあるベンダーフォルダーにすべての依存関係がインストールされ、プロジェクトが競合することはありません。 各プロジェクトには、インストールされた依存関係の独自のセットがあります。



composer.jsonでも、スクリプトセクションを指定できます。 賢く使用すれば、簡単な展開マネージャーを手に入れることができます。 しかし、このセクションの研究は宿題としてあなたに任されています:)。



どのように機能しますか? プロジェクトのルートにcomposer.jsonファイルを作成し、ドキュメントに従って記入するだけです。 このファイルに最低限必要なのは、依存関係のセットです。 実際、これは単なるjsonオブジェクトであり、キーは必要なパッケージの名前であり、値はプロジェクトに必要なバージョンです。 Semverはバージョンを示すために使用されます。 たとえば、プロジェクトでPHP最小バージョン5.4およびmonolog 1.9が必要な場合*ログライブラリ、次のrequireオブジェクトを指定する必要があります。



"require": { "php": ">=5.4.0", "monolog/monolog": "1.9.*" }
      
      







次に、コマンドラインでcomposer updateコマンドを実行するだけで、すべての新しい依存関係がベンダーフォルダーに読み込まれ、それらを使用できます。 はい、PHP Composer全体はプルアップされませんが、マシンにインストールされているPHPのバージョンが正しいバージョンであることを確認します。 また、ライブラリに関しては、Composerは適切なバージョンパッケージをベンダーフォルダーにダウンロードします。



状況を想像してみてください。私たちはようやくComposerをプロジェクトに実装し、それを全力で使用します。 しかし、ある時点で、開発者とサーバーの両方が異なるバージョンのライブラリを使用する状況になります。 になる方法 これを行うために、composerはcomposer.jsonの横にcomposer.lockファイルを作成します。 composer updateコマンドの後、インストールされているバージョンに関する正確な情報がそれに書き込まれます。 バージョン管理システムにコミットする必要があるため、すべての開発者とサーバー上でcomposer installコマンドを実行するだけで、このファイルに記述されているバージョンのライブラリがすべてインストールされます。



パッケージを書く



興味のある開発者は、作曲家パッケージを作成し、オープンソースに入れる権利を持っています。 このプロセスをさらに説明したいと思います。



Composerパッケージは、基本的に、任意のプロジェクトに接続できるファイルのセットです。 これらはすべて、必要に応じてフォルダに分類できます。 主なことは、composerの起動を構成することです。 composerパッケージの構造は何ですか? パッケージに必要なファイルはcomposer.jsonです。 これは、このパッケージに関するすべての情報(名前、説明、依存関係のリスト、ライセンスの種類など)が保存されているファイルです。 以下は、composer.jsonシンプルパッケージの例です。



 { "name": "dataart/package", "type": "library", "description": "Composer package by DataArt", "license": "MIT", "require": { "php": ">=5.4.0", "illuminate/support": "~4.2" }, "autoload": { "psr-4": { "Dataart\\Package\\": "src/" } } }
      
      







名前-パッケージ名(ベンダー/名前の形式)。

タイプ-パッケージのタイプ、このパッケージ-ライブラリ

説明-パッケージの説明。

ライセンス-ライセンスの種類。

必須-このパッケージの依存関係のリスト。 少なくとも5.4.0のPHPバージョンと、illumina / supportパッケージが必要です。 すべてのバージョンは、semverによって記述されます。

Autoload-スタートアップ設定。 この場合、名前空間Dataart \ Packageがsrcフォルダーで開始されることが示されます。 つまり、srcフォルダーにあるすべてのファイルには、ネームスペースDataart \ Packageが必要です。 たとえば、Userクラスを作成し、Modelsフォルダーにクラスファイルを保存する場合、Userクラスの名前空間はDataart \ Package \ Modelsである必要があります。



srcフォルダーには、パッケージが機能するために必要なすべてのファイルが含まれています。 srcフォルダーの横にtestsフォルダーを作成し、ライブラリをテストで覆うことをお勧めします。 次に、composer.jsonが存在するフォルダー全体をGithubにコミットする必要があります。 Bitbucketでは可能ですが、誰もがGithubを使用しています。



Composerには、操作を高速化するために設計された多くのコンソールコマンドもあります。



初期化


composerプロジェクトのインタラクティブな初期化が開始され、いくつかの基本的な質問をすることでcomposer.jsonファイルが生成されます。



インストールする


composer.jsonを読み取り、依存関係を解決し、ベンダーフォルダーにインストールします。 composer.lockファイルがフォルダー内にある場合、ファイルで指定された正確なバージョンが使用されます。 これにより、すべての開発者がすべてのライブラリの同じバージョンを持つことができます。



更新する


パッケージの新しいバージョンを取得するために使用され、composer.lockを更新します。 新しい依存関係が追加された場合にも使用されます。 パラメータとともに使用することもできます。 composer update vendor / package1 vendor / package2は、2つのパッケージのみを更新します。 composer update vendor / *コマンドを使用して、1つのベンダーのすべてのパッケージを更新することもできます



要求する


コマンドラインから新しい依存関係を追加します。 たとえば、composerにはベンダー/パッケージが必要です:2. * vendor / package2:dev-master。 バージョンを指定しない場合、コンポーザーは自動的に最新の安定バージョンをプルアップします。



取り除く


requireの正反対。



ダンプ自動ロード


新しいクラスまたはオートローディングルールが表示された場合、オートローダーを更新します。



–optimize-autoloader(-o)スイッチをinstall、update、およびdump-autoloadコマンドに追加して、psr-0 / 4オートロードルールを「クラスマップ」に変換し、オートロードを高速化できます。 実稼働環境に推奨。



オープンソース



コミットしましたか? クールですが、何らかの理由で、コンポーザーはまだパッケージを見つけられず、別のプロジェクト用にプルアップできません。 になる方法



はい、composer.jsonでリポジトリの特定のsvn / gitアドレスを指定できますが、これは不便です。 リポジトリアドレスと一致するパッケージがある場所に何らかの中心点があると、はるかに便利です。 これはPackagistです。



コンポーザーパッケージの公開に使用されます。 そこにパッケージを投稿するのはとても簡単です。 サービスに登録する(またはoAuth2経由でGithubアカウントを使用する)だけで十分です。次に、[パッケージの送信]リンクに従ってリポジトリのURLを指定すると、Packagistが残りを取得し、定期的にリポジトリの新しいバージョンを確認します。



バージョン管理はどのように機能しますか? バージョン管理は、 semverシステムに従って実行する必要があります。 バージョン管理システムのタグを使用してパッケージのバージョンを指定します。 すべてが非常に簡単です!



パッケージを作成して公開し、オープンソースコミュニティの完全なメンバーになります。



composerはgetcomposer.orgでインストールできます。



packagist.orgで利用可能なすべてのPHPパッケージを参照してください。



All Articles