W świeżej kompilacji Laravel, nie mogę przesłonić wiązań IoC do pracy wszędzie w aplikacji.Zastępowana klasa podstawowa nie działa, gdy w rzemiośle
Załóżmy, że dostawca usług zastępuje klasę podstawową, np. cache:
class NewServiceProvider extends ServiceProvider
{
protected $defer = true;
public function register()
{
$this->app->singleton('cache', function($app) {
return new \stdClass; // demo purpose
});
}
public function provides()
{
return ['cache'];
}
}
Operator dodaje się następnie na dole app.providers
config.
teraz modyfikować routes.php
na następujące kwestie i iść sprawdzić wynik:
Route::get('/', function() {
dd(app('cache'));
});
// Results in an empty stdClass being shown. It works!
jednak odpalić artisan tinker
i zrobić to samo:
$ php artisan tinker
>>> app('cache')
=> Illuminate\Cache\CacheManager
Nagle korekcja nie działa już ..
To samo zachowanie występuje podczas przetwarzania detektorów zdarzeń ...
Czy to normalne zachowanie i czy coś przeoczyłem? Czy to jakiś błąd?