public function getContents($directory = '', $recursive = false, $filterPatterns = []) { try { $contents = $this->fs->listContents($directory, $recursive); if (!$contents) { if (!$this->exists($directory)) { throw new ReadException("Directory {$directory} does not exist."); } return []; } $proxy = $this; $filterPatterns = (array) $filterPatterns; $filter = function ($object) use($proxy, $filterPatterns) { foreach ($filterPatterns as $filterPattern) { if (!$proxy->match($filterPattern, $object['basename'])) { return false; } } return true; }; return array_values(array_filter($contents, $filter)); } catch (Error $ex) { } catch (Exception $ex) { } throw new ReadException("Directory {$directory} items could not be listed.", $ex); }