2017-05-18 8 views
1

私は他のライブラリを含むPHPライブラリを作成しようとしています。作者:ライブラリが必要なライブラリ

AWS PHP SDKを参考にして、私はComposerをインストールした後に他のライブラリを必要とするライブラリを作成したいと思いますが(現在のライブラリと必要なライブラリの両方からの)単にrequire 'vendor/autoload.php;'を使用します。

これを設定するための基本的な要件は何ですか? composer.jsonを構成すること、特定の方法で名前空間を設定すること、またはその両方の問題ですか?

答えて

3

あなたが記述しているのは、Composerの主な目的、つまり他のパッケージを必要と実装する可能性があるコードパッケージの定義です。

:1が requireを標識し、1は require-devをラベル付け、あなたは作曲のすべての構成情報を提供composer.jsonファイルを見れば、あなたは、2つのブロックが必要と表示されます、ガイドとしてAWS SDKを使用して

"require": { 
    "php": ">=5.5", 
    "guzzlehttp/guzzle": "^5.3.1|^6.2.1", 
    "guzzlehttp/psr7": "^1.4.1", 
    "guzzlehttp/promises": "~1.0", 
    "mtdowling/jmespath.php": "~2.2" 
}, 
"require-dev": { 
    "ext-openssl": "*", 
    "ext-pcre": "*", 
    "ext-spl": "*", 
    "ext-json": "*", 
    "ext-dom": "*", 
    "ext-simplexml": "*", 
    "phpunit/phpunit": "^4.8.35|^5.4.0", 
    "behat/behat": "~3.0", 
    "doctrine/cache": "~1.4", 
    "aws/aws-php-sns-message-validator": "~1.0", 
    "nette/neon": "^2.3", 
    "andrewsville/php-token-reflection": "^1.4", 
    "psr/cache": "^1.0" 
}, 

これは、ライブラリが依存する他のパッケージ/ライブラリを定義する方法です。 requireセクションには、ライブラリのインストール時にインストールする必要のある他のすべてのライブラリが一覧表示されます。 require-devセクションには、開発環境で作業している場合にのみ必要なライブラリが記載されており、運用環境では不要です。

必要な他のライブラリを指定すると、Composerはライブラリをインストールしてからライブラリに必要なライブラリ(ライブラリが必要とするライブラリなど)を必要とします。

含まれるライブラリにも含まれていますが、互換性を確保するために、バージョン番号も含まれています。

私が見つけた新しい依存関係を追加する最も簡単な方法は、composer requireコマンドでコマンドラインにあります。ここにはhttps://getcomposer.org/doc/03-cli.md#requireと記載されています。このコマンドは、正確な情報がわからない場合に、必要なパッケージを自動的に解決することができます(必要に応じて変更できます)。

開発専用の依存関係を必要とする場合は、コマンドを実行するときに--devフラグを追加します。

このコマンドを使用すると、Composerは自動的にcomposer.jsonファイルを更新し、ローカルマシンへの依存関係をプルダウンし、オートローダーを更新します。

依存関係を自動ロードできるようにするには、require_once vendor/autoload.php以上のことを行う必要はありません。Composerは、オートローダの設定に関するすべての作業を行いますので、新しい依存関係があるため最新の状態に保つ必要がありません。追加されました。

composer.jsonスキーマに関する完全なドキュメントは、https://getcomposer.org/doc/04-schema.mdです。プロジェクトのルートにcomposer.json設定ファイルがあるので、プロジェクト用のコンポーザー(および後でライブラリーが必要なもの)を構成できます。あなたが持っていない場合は、composer initコマンドを使ってインタラクティブに作成することができます。そのコマンドに関するドキュメントはここにあります:https://getcomposer.org/doc/01-basic-usage.md

+0

おかげで、[トラブルシューティング](https://getcomposer.org/を:https://getcomposer.org/doc/03-cli.md#init

そして、ここでは、すでにそれを行っていない場合は、その基本的な使い方ガイド、ですdoc/articles/troubleshooting.md#package-not-found)ページも参考になりました.Packagist(#3の "Package not found")に公開されていない限り、Composerは再帰的に "子"パッケージを持ち込みません。 –

+0

Packagistに登録されていないが、インターネット上で複製できるようになっているライブラリ(Github、Gitlab、gitを持つパブリックサーバなど)を使用し、ルートにcomposer.jsonファイルがあるライブラリを使用する場合は、あなたのcomposer.jsonファイルの "repositories"キーの下にそれを登録することによってそれをもたらすことができます。その上のドキュメントは次のとおりです:https://getcomposer.org/doc/04-schema.md#repositories。私はそれがあなたのライブラリが直接必要とする依存関係のために働くことを知っていますが、再帰的にそれをテストしたことはありません(依存関係の依存関係)。 – stratedge

関連する問題