/** * Gets the file object for the path given. Paths with the mount point included are * preferred, but are not required for BC. If the mount point is not included a list * of filesystems are checked and chosen if the file exists in that filesystem. * * @param FileInterface|string $path * * @throws FileNotFoundException If file was not found. * * @return FileInterface */ public function getFile($path) { if ($path instanceof FileInterface) { return $path; } if (!$this->filesystem instanceof AggregateFilesystemInterface || $this->containsMountPoint($path)) { $file = $this->filesystem->getFile($path); if (!$file->exists()) { throw new FileNotFoundException($path); } return $file; } // Trim "files/" from front of path for BC. if (strpos($path, 'files/') === 0) { $path = substr($path, 6); } foreach ($this->filesystemsToCheck as $mountPoint) { if (!$this->filesystem->hasFilesystem($mountPoint)) { continue; } $file = $this->filesystem->getFile("{$mountPoint}://{$path}"); if ($file->exists()) { return $file; } } throw new FileNotFoundException($path); }