function HookCollectorBase::getHookFileIterator
Gets the files that can contain hook implementations.
Parameters
string $dir: The extension directory.
list<string> $procedural_files: The root-level procedural hook implementation files.
Return value
\Generator<\SplFileInfo> The procedural hook files and PHP files in src/Hook.
File
-
core/
lib/ Drupal/ Core/ Hook/ HookCollectorBase.php, line 28
Class
- HookCollectorBase
- Provides shared hook collection functionality.
Namespace
Drupal\Core\HookCode
protected function getHookFileIterator(string $dir, array $procedural_files) : \Generator {
foreach ($procedural_files as $filename) {
$filename = "{$dir}/{$filename}";
if (is_file($filename)) {
yield new \SplFileInfo($filename);
}
}
$hook_directory = "{$dir}/src/Hook";
if (!is_dir($hook_directory)) {
return;
}
$flags = \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS | \FilesystemIterator::FOLLOW_SYMLINKS;
$iterator = new \RecursiveDirectoryIterator($hook_directory, $flags);
$iterator = new \RecursiveCallbackFilterIterator($iterator, static fn(\SplFileInfo $fileinfo): bool => $fileinfo->isDir() || $fileinfo->getExtension() === 'php');
foreach (new \RecursiveIteratorIterator($iterator) as $fileinfo) {
yield $fileinfo;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.