Composer - API / Custom Installerを自動ロードする
-
21-12-2019 - |
質問
作曲家のインストールライブラリを使用して、ライブラリAPI関数のセットをオートロードする方法を教えてください。
私は、ライブラリの内部オブジェクトをインタフェースし、ComposerがAPIを自動的にロードしてファイルを含める必要なく、インストール後に利用可能にするために使用される機能APIを持つライブラリを持っています。
現在ライブラリは__init__.php
を含めてロードされ、必要に応じてAPI関数とオートローダが含まれます。
ありがとう!
解決
Composerは常にEnd-Developerに1つのファイルを含める必要があります。これはvendor/autoload.php
です。あなたはそれをより簡単にすることはできません。
しかし、Composerの統合により代わりにそのオートローダを使用することができるため、e__init__.php
を含むものはオプションです。これは、これも本当に自動ロードされないことができませんでした - Composerオファーは常にそう言われた場合にファイルを含めることができます。
SOそのAPIライブラリのあなたの作曲家の設定は次のようになります:
{
"name": "yourvendorname/yourfancylibraryname",
"license": "any open source identifier",
"autoload": {
"psr-0": {
"Foo_Api": "src/files"
},
"classmap": [
"extra/folders_with_any_other_class_not_conforming_to_psr0_or_psr4"
],
"files": [
"functions/file_with_your_function_definitions.php"
]
}
}
.
クラスがPSR-0またはPSR-4に準拠しているかどうかはわかりませんが、そうであれば、これらの標準を使用してオートローダを宣言できる場合は、お客様と全員が利益を得ます。そうでない場合:ClassMapはあなたを助けるでしょう。
機能定義は、「ファイル」に記載されているファイルまたはファイルによってロードされます。
作曲家にはもう独自のオートローダを必要としません。
もちろん、「ファイル」に含めるファイルとして古い__init__.php
を単に言及することもできますが、これは他のすべてのクラスからライブラリを分離するでしょう。それらのうちの2つを持つ必要はなく、すべてのクラスがさらに高速な作曲家のクラスマップオートローダにダンプされてから除外されます。 所属していません StackOverflow