diskLocalConfig = $diskLocalConfig; $this->drivers = $drivers; } /** * @inheritDoc */ protected function resolve($name, $config = null): Filesystem { $localConfig = $config ?? $this->getLocalConfig($name); if (empty($localConfig)) { throw new InvalidArgumentException("Disk [{$name}] has not been declared. Use the Filesystem extender to do this."); } $driver = $config['driver'] ?? $this->getDriver($name); if ($driver === 'local') { return $this->createLocalDriver($localConfig); } $settings = $this->app->make(SettingsRepositoryInterface::class); $config = $this->app->make(Config::class); return $driver->build($name, $settings, $config, $localConfig); } /** * @return string|DriverInterface */ protected function getDriver(string $name) { $config = $this->app->make(Config::class); $settings = $this->app->make(SettingsRepositoryInterface::class); $key = "disk_driver.$name"; $configuredDriver = Arr::get($config, $key, $settings->get($key, 'local')); return Arr::get($this->drivers, $configuredDriver, 'local'); } protected function getLocalConfig(string $name): array { if (! array_key_exists($name, $this->diskLocalConfig)) { return []; } $paths = $this->app->make(Paths::class); $url = $this->app->make(UrlGenerator::class); return $this->diskLocalConfig[$name]($paths, $url); } }