質問

Composerプロジェクトを持っている、それをMyVendor\Databaseに呼び出します。そのプロジェクトはComposerとオートロードを使用します。そのプロジェクトにはいくつかのファイルがあります。

require_once __DIR__."/../vendor/autoload.php";
.

オートローディングを利用するために

他のプロジェクトにMyVendor\Databaseを含めるまで、それはすべてうまく機能します。

私は別のプロジェクトを持っています、MyVendor\CoolPackageを必要とするMyVendor\Databaseを呼び出します。

CoolPackageにComposerのインストールを実行し、MyVendor\Databaseをベンダーフォルダにダウンロードします。

ここからの問題は、vendor\MyVendor\Databaseを呼び出すため、require_once __DIR__."/../vendor/autoload.php"内のマイファイルは失敗しますが、\vendor\MyVendor\Databaseの内部にはベンダーフォルダはありません。

役に立ちましたか?

解決

composer.jsonでは、オートロード方式を定義します。あなたが今自分自身を見つけた理由で、そのアプリケーションやモジュールの中にも、そのアプリケーションやモジュールだけでなく他のアプリケーションでも、オートロード可能であると思われるファイルの内部でオートロードを呼び出すことをお勧めします。

基本的には、PSR-0または4のオートロードの定義に基づいて、任意のコンポーネントプロジェクトのファイルを分割する必要があります。副作用のないクラスまたは関数の宣言だけ(コードを実行する)、またはコードを実行しないでください。クラスや関数の定義前のファイルのみをオートロードできます(関数を除く、files AutoLoadセクションでそれらを含むファイルをロードすることによって常に宣言することができるだけであろう)、後者はオートローブされるべきではありません。

と比較的簡単になるはずです:このコンポーネントが別のアプリケーションに含まれているときに、オートロードできるすべてのクラスも使用できます。クラスではない他のものは直接使用できません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top