Composer не несет ответственности за загрузку autoload.php
, но какой бы фреймворк вы ни использовали. PHPUnit, в вашем случае.
PHPUnit загружает только vendor/autoload.php
, поскольку этот файл загружается в конфигурации phpunit.xml
.
Гораздо проще, чем делать какие-либо странные инъекции во время запуска композитора, - просто создать свой собственный файл начальной загрузки тестирования.
Если вы отметите phpunit.xml
, вы найдете объявление начальной загрузки, которое по умолчанию загружает vendor/autoload.php
:
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
Создайте новый файл начальной загрузки (например, testing_bootstrap.php
) и включите в него все необходимые файлы в дополнение к vendor/autoload.php
:
<?php
// testing_bootstrap.php
require 'path/to/wordpress/wp-load.php';
require 'vendor/autoload.php`;
И измените ваш файл phpunit.xml
, чтобы он использовал этот файл для начальной загрузки ваших тестов.
bootstrap="testing_bootstrap.php"
Это чище, удобнее в обслуживании и обеспечивает правильный результат. Какие файлы загружаются / загружаются перед выполнением не является задачей композитора.
Чтобы выполнить то же самое во время обычного запуска Laravel, вам нужно изменить файл точки входа Laravel , там вы найдете, что там требуется автозагрузка:
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/
require __DIR__.'/../vendor/autoload.php';
Если вы хотите загрузить другой файл до автозагрузки, просто добавьте соответствующий оператор require
или include
до этой точки.
например:.
require 'path/to/wordpress/wp-load.php';
require __DIR__.'/../vendor/autoload.php';
Использование files
клавиши композитора просто не будет работать . Эти файлы загружаются в файл vendor/composer/autoload_files.php
, а он, в свою очередь, загружается в vendor/composer/autoload_real.php::getLoader
, после после завершения настройки процесса автозагрузки.