From b851b08914665493938639662842278b33c186da Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 18 Dec 2024 15:11:27 -0500 Subject: [PATCH] change static properties to collection in container --- src/Providers/AddonServiceProvider.php | 15 +++++++++------ src/Providers/AppServiceProvider.php | 3 +++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Providers/AddonServiceProvider.php b/src/Providers/AddonServiceProvider.php index ac085ae790..1fd5843a5c 100644 --- a/src/Providers/AddonServiceProvider.php +++ b/src/Providers/AddonServiceProvider.php @@ -183,12 +183,15 @@ abstract class AddonServiceProvider extends ServiceProvider */ protected $translations = true; - private static array $autoloaded = []; + private $autoloadedClasses; - private static array $bootedAddons = []; + private $bootedAddons; public function boot() { + $this->bootedAddons = $this->app->make('statamic.booted-addons'); + $this->autoloadedClasses = $this->app->make('statamic.autoloaded-addon-classes'); + Statamic::booted(function () { if (! $this->getAddon()) { return; @@ -222,7 +225,7 @@ public function boot() ->bootPublishAfterInstall() ->bootAddon(); - static::$bootedAddons[] = $this->getAddon()->id(); + $this->bootedAddons[] = $this->getAddon()->id(); }); } @@ -835,12 +838,12 @@ protected function autoloadFilesFromFolder($folder, $requiredClass = null) continue; } - if (in_array($fqcn, static::$autoloaded)) { + if ($this->autoloadedClasses->contains($fqcn)) { continue; } $autoloadable[] = $fqcn; - static::$autoloaded[] = $fqcn; + $this->autoloadedClasses[] = $fqcn; } return $autoloadable; @@ -853,7 +856,7 @@ private function shouldBootRootItems() // We'll keep track of addons that have been booted to ensure that multiple // providers don't try to boot things twice. This could happen if there are // multiple providers in the root autoload directory (src) of an addon. - if (in_array($addon->id(), static::$bootedAddons)) { + if ($this->bootedAddons->contains($addon->id())) { return false; } diff --git a/src/Providers/AppServiceProvider.php b/src/Providers/AppServiceProvider.php index ada744379f..4cbb125489 100644 --- a/src/Providers/AppServiceProvider.php +++ b/src/Providers/AppServiceProvider.php @@ -105,6 +105,9 @@ public function boot() $this->addAboutCommandInfo(); $this->app->make(Schedule::class)->job(new HandleEntrySchedule)->everyMinute(); + + $this->app->instance('statamic.booted-addons', collect()); + $this->app->instance('statamic.autoloaded-addon-classes', collect()); } public function register()