To jest naprawdę nieprzyjemny problem. Złożyłem wniosek dotyczący funkcji kompozytora: https://github.com/composer/composer/issues/6768
Powinien istnieć sposób na określenie kolejności operacji automatycznego ładowania, aby można było załadować własne "pliki", zanim którakolwiek z klas zostanie "wymagać" lub "wymagać" -dev "sekcje; każde rozwiązanie, które wymaga od ciebie edycji paczki trzeciej strony wewnątrz dostawcy/jest w najlepszym wypadku hacky, ale obecnie nie sądzę, żeby istniały inne dobre alternatywy.
Najlepsze, co mogę wymyślić, to użyć skryptu do zmodyfikowania vendor/autoload.php, tak aby zawierał pliki z mocą, ZANIM zawarł jedną z klas autoload. Oto mój modify_autoload.php:
<?php
/**
* Updates the vendor/autoload.php so it manually includes any files specified in composer.json's files array.
* See https://github.com/composer/composer/issues/6768
*/
$composer = json_decode(file_get_contents('composer.json'));
$files = (property_exists($composer, 'files')) ? $composer->files : [];
if (!$files) {
print "No files specified -- nothing to do.\n";
exit;
}
$patch_string = '';
foreach ($files as $f) {
$patch_string .= "require_once __DIR__ . '/../{$f}';\n";
}
$patch_string .= "require_once __DIR__ . '/composer/autoload_real.php';";
// Read and re-write the vendor/autoload.php
$autoload = file_get_contents(__DIR__ . '/vendor/autoload.php');
$autoload = str_replace("require_once __DIR__ . '/composer/autoload_real.php';", $patch_string, $autoload);
file_put_contents(__DIR__ . '/vendor/autoload.php', $autoload);
Można uruchomić to ręcznie, czy można mieć kompozytor go uruchomić poprzez dodanie go do swoich skryptów composer.json:
{
// ...
"scripts": {
"post-autoload-dump": [
"php modify_autoload.php"
]
}
// ...
}
Znalazłeś rozwiązanie to? Mam ten sam problem ... –
Jeszcze nie ........ –