JpgCompressor::class, 'image/png' => PngCompressor::class, ]; public function fromMedia(string $mediaPath): Compressor { return $this->resolve(new MediaPath($mediaPath)); } public function resolve(MediaPath $path): Compressor { $compiler = $this->resolveType($path->type()); if (is_null($compiler)) { return new $this->default($path); } return new $compiler($path); } private function resolveType(string $type): ?string { return collect($this->types)->get($type); } }