请求为Finder类添加跳过不存在目录的选项以避免Fixer终止
能否为Finder类添加“跳过不存在目录”选项,避免单个目录不存在导致Fixer终止?
当用Finder类监控多个目录时,只要其中某个目录(或通配符匹配的路径)不存在,Finder就会抛出异常,直接让Fixer停掉。示例代码如下:
$finder = Finder::create() ->in([ __DIR__ . '/web/app/mu-plugins/ys-*', __DIR__ . '/web/app/plugins/ys-*' ]) ->name('*.php') ->ignoreDotFiles(true) ->ignoreVCS(true);
想问问能不能加个选项,让Finder自动跳过不存在的目录,别直接抛异常终止程序。
临时解决办法:手动过滤有效路径
目前Finder本身没有这个内置选项,但你可以提前自己处理路径,只把存在的路径传给它:
- 先解析带通配符的路径,拿到实际存在的目录
- 过滤掉所有不存在的路径,只保留有效项
示例代码:
$paths = [ __DIR__ . '/web/app/mu-plugins/ys-*', __DIR__ . '/web/app/plugins/ys-*' ]; $validPaths = []; foreach ($paths as $path) { // 处理带通配符的路径,匹配所有存在的目录 $matchedDirs = glob($path, GLOB_ONLYDIR); if (!empty($matchedDirs)) { $validPaths = array_merge($validPaths, $matchedDirs); } // 处理不带通配符的普通路径,直接检查是否存在 elseif (is_dir($path)) { $validPaths[] = $path; } } // 只给Finder传有效路径 $finder = Finder::create() ->in($validPaths) ->name('*.php') ->ignoreDotFiles(true) ->ignoreVCS(true);
关于添加官方选项的建议
如果希望官方内置这个功能,可以去Symfony的GitHub仓库(Finder是Symfony组件的一部分)提交Feature Request,说明你的使用场景——比如多目录监控时需要容错,避免单个无效路径导致整个Fixer任务失败,这样维护者更容易评估需求的合理性。
内容的提问来源于stack exchange,提问作者ruckie
相关产品推荐
相关产品推荐

