Я пытаюсь зарегистрировать класс как синглтон в laravel контейнере в App\Providers\AppServiceProvider
register()
use App\MyServices\SingletonService;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
//...
}
public function register()
{
$this->app->singleton(SingletonService::class, function ($app) {
return new SingletonService();
});
}
}
в каком-то другом классе, разрешаю зарегистрированный сервис
use App\MyServices\SingletonService;
class SomeOtherService {
//...
public static function doWork() {
$locatedService = resolve(SingletonService::class);
//...
}
всякий раз, когда я разрешаю зарегистрированный сервис, его конструктор выполняется, и сервисный локатор возвращает новый экземпляр. я нашел этот вопрос является наиболее близким к моей проблеме, но это не сильно помогло. я даже заметил, что с каждым запросом http laravel приложение запускает методы boot()
и register()
, что звучит для меня нелогично.
Я совершенно новичок в php и laravel. что может быть не так?
php 7. laravel 5.8.
регистрация:
разрешение:
класс обслуживания: