2015-02-23 3 views
3

Я пытался связать некоторые службы в Laravel AppServiceProvider, но службы не были связаны. Я думаю, что AppServiceProvider даже не был вызван. Фактически, я создал новый, и он работает.Laravel - AppServiceProvider не называется

Итак, мой вопрос: я делаю что-то неправильно? Или не был вызван AppServiceProvider?

+0

Если поставщик услуг зарегистрирован в 'config/app.php', он должен быть вызван. Чтобы сказать больше, мне нужно увидеть ваш код – lukasgeiter

+0

Этот провайдер находится в Laravel как поставщик по умолчанию, я имею в виду, что этот провайдер не мой, я просто попытался добавить в него еще несколько связок. –

+0

Мне это хорошо известно. – lukasgeiter

ответ

8

Laravel pre-compiles определенные классы, которые используются в основном по каждому запросу. Это служит для оптимизации производительности. Файлы для компиляции могут быть указаны в config/compile.php под кодом files. default one выглядит следующим образом:

'files' => [ 
    realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), 
    realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), 
    realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), 
    realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), 
    realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), 
], 

При запуске php artisan optimize, когда отладка не включена (или с помощью опции --force) Эти перечисленные файлы и другие каркасные классы будут записаны storage/framework/compiled.php.

Это означает, что если вы измените один из этих файлов скомпилированных, изменения не будут применены немедленно (если compiled.php существует), но только после того, как вы запустите php artisan optimize еще раз или после того, как вы запустите php artisan clear-compiled очистить файл compiled.php.

Конечно, вы также можете удалить AppServiceProvider из списка в качестве альтернативного решения.

Смежные вопросы