You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求为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本身没有这个内置选项,但你可以提前自己处理路径,只把存在的路径传给它:

  1. 先解析带通配符的路径,拿到实际存在的目录
  2. 过滤掉所有不存在的路径,只保留有效项

示例代码:

$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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:10:14