カスタムファイルローダーで自動読み込みを使用しています。 また、ローダーがベンダーの一部のクラスに依存しているため、問題が発生します。 しかし、composerはベンダーローダーの前に私のローダーを必要とします。
ここで生成されるautoloader.php
:
<?php
// autoload.php generated by Composer
if (!class_exists('Composer\\Autoload\\ClassLoader', false)) {
require __DIR__ . '/composer' . '/ClassLoader.php';
}
return call_user_func(function() {
$loader = new \Composer\Autoload\ClassLoader();
$composerDir = __DIR__ . '/composer';
$map = require $composerDir . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->add($namespace, $path);
}
$classMap = require $composerDir . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
$loader->register();
require $baseDir . '/Nella/loader.php'; // <-- my libs
require $vendorDir . '/nette/nette/Nette/loader.php'; // <-- vendor libs
return $loader;
});
(_Nella_)ローダーには_Nette_のクラスが必要なため、libs(_Nella_)の前に_Nette_をロードする必要があります。
@Seldaekここでの順序は、依存関係を解決するときに見つかった順序を尊重する必要があると思います。そのため、依存関係の自動読み込みファイルは、それに依存するパッケージのファイルの前に読み込まれます。
うん、それは理にかなっている、最初の実行後はかなりランダムだと思うが、それがどれほど簡単に達成できるかはわからない。
私はこれを取得するかどうか完全にわかりませんか? すべてのオートローダーが必要になりますが、順序は重要ではありませんか?
編集:私がそれを得るのを気にしないでください:)
ソルバーは、パッケージがすでにインストールされている場合を含め、トランザクションでこれらを正しい順序で返す必要があるため、順序が正しくない理由がわかりません。
これが私の_composer.json_https ://github.com/nella/framework/blob/composer/composer.jsonです
kdyby/forms-replicator
同じ問題が発生しました
{
"name":"kdyby/forms-replicator",
"require":{
"php":">=5.3.2",
"nette/nette":"*"
},
"autoload":{
"files":["Replicator.php"]
}
}
順序require
でautoload_real.php
パッケージがお互いを必要とどのように対応すべきです。
@HosipLanの修正をマージし
libを最初にロードする必要があることをマークするにはどうすればよいですか?
つまり、他に依存していませんが、他のものをロードする前に最初にロードする必要があります。
@onlyongunzと同じ質問がありapigen/apigen
とsymfony/var-dumper
をグローバルにインストールしましたが、 tracy/tracy
からdump()
バージョンを使用する場合(ApiGenで必要)と呼ばれます。 VarDumperのバージョンを使用したい。
さて私はsugestと思うload_first
、それは(それのPHPや他の何かがない限り)他のliblaryに依存し、追加しなかったときの負荷にパッケージを優先する--ignore-order
無視するようにload_first
。
最も参考になるコメント
順序を定義できると便利です。 またはさらに良い:最初にロードする必要があるファイルを定義するための追加オプションがあります。
ユースケース:laravelのヘルパー関数は、それを念頭に置いて具体的に定義されているため、オーバーライドしようとしていますが、私の定義がlaravelのネイティブ関数よりも前にある必要があることを作曲家に伝える方法はありません。
コンテキスト: https :
回避策: https :