не удалось зарегистрировать одноэлементный класс обслуживания в контейнере laravel - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь зарегистрировать класс как синглтон в 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.

регистрация: registration

разрешение: resolve

класс обслуживания: service class

...