Skip to content
Snippets Groups Projects

Issue #3195700: RegexDirectoryIterator can extend RegexIterator

1 file
+ 4
13
Compare changes
  • Side-by-side
  • Inline
@@ -5,14 +5,7 @@
@@ -5,14 +5,7 @@
/**
/**
* Iterates over files whose names match a regular expression in a directory.
* Iterates over files whose names match a regular expression in a directory.
*/
*/
class RegexDirectoryIterator extends \FilterIterator {
class RegexDirectoryIterator extends \RegexIterator {
/**
* The regular expression to match.
*
* @var string
*/
protected $regex;
/**
/**
* RegexDirectoryIterator constructor.
* RegexDirectoryIterator constructor.
@@ -25,18 +18,16 @@ class RegexDirectoryIterator extends \FilterIterator {
@@ -25,18 +18,16 @@ class RegexDirectoryIterator extends \FilterIterator {
*/
*/
public function __construct($path, $regex) {
public function __construct($path, $regex) {
// Use FilesystemIterator to not iterate over the . and .. directories.
// Use FilesystemIterator to not iterate over the . and .. directories.
$iterator = new \FilesystemIterator($path);
parent::__construct(new \FilesystemIterator($path), $regex);
parent::__construct($iterator);
$this->regex = $regex;
}
}
/**
/**
* Implements \FilterIterator::accept().
* Implements \RegexIterator::accept().
*/
*/
public function accept() {
public function accept() {
/** @var \SplFileInfo $file_info */
/** @var \SplFileInfo $file_info */
$file_info = $this->getInnerIterator()->current();
$file_info = $this->getInnerIterator()->current();
return $file_info->isFile() && preg_match($this->regex, $file_info->getFilename());
return $file_info->isFile() && preg_match($this->getRegex(), $file_info->getFilename());
}
}
}
}
Loading