Symfony中direct deprecations与indirect deprecations的含义是什么?
Symfony PHPUnit Bridge 中 direct/indirect deprecations 的实际含义
这两个术语确实是Symfony PHPUnit Bridge组件的自定义分类,官方文档没有给出明确解释,从组件源码运行逻辑和实际触发场景来看,二者的区分逻辑非常直白:
- Direct deprecations(直接弃用):触发源在你自己维护的第一方代码(业务代码、测试代码)中的弃用提示。简单说就是你自己写的代码里直接调用了被标记为
@deprecated的类、方法、属性或配置项,这类问题你可以直接修改自有代码完成修复。
比如你在自己写的控制器里调用了当前框架版本标记为弃用的旧路由生成方法,运行测试时抛出的这条弃用提示就属于直接弃用,这类提示默认会被PHPUnit Bridge计入测试不通过的统计项。 - Indirect deprecations(间接弃用):触发源在你项目依赖的第三方代码(
vendor目录下的第三方扩展包、框架自身底层非你修改的部分)中的弃用提示。你自己写的代码没有直接调用任何弃用逻辑,是你引入的其他代码内部调用了弃用特性才抛出的提示,这类问题你没法直接修改触发点修复,通常要等对应依赖包发布兼容更新,或者通过配置临时忽略告警。
比如你项目里装的第三方日志SDK内部用了已经被标记弃用的框架事件接口,你跑测试时冒出来的这条弃用提示就属于间接弃用,这类提示默认只会在测试结果里输出告警,不会直接导致测试失败。
你可以通过修改PHPUnit Bridge的配置参数,自定义两类弃用的处理规则,比如把特定包触发的间接弃用标记为直接弃用强制修复,或者忽略某些历史遗留的直接弃用提示避免阻断测试流程。
内容的提问来源于stack exchange,提问作者joachim
相关产品推荐
相关产品推荐

