通过传入引用参数或返回拼接结果的方式,可完全避免使用类成员变量实现递归路径收集,使函数更纯粹、可测试且线程安全。
在处理嵌套层级结构(如树形菜单、分类路径、祖先链)时,常需将深层嵌套数据“摊平”为有序数组。原始实现借助类属性 $breadcrumb 作为全局累加器,虽简洁但破坏了函数的纯度:它依赖外部状态、不可重入、难以并发调用,且单元测试需额外清理状态。
推荐采用无副作用的递归设计,有两种主流方式:
通过传入引用参数或返回拼接结果的方式,可完全避免使用类成员变量实现递归路径收集,使函数更纯粹、可测试且线程安全。
在处理嵌套层级结构(如树形菜单、分类路径、祖先链)时,常需将深层嵌套数据“摊平”为有序数组。原始实现借助类属性 $breadcrumb 作为全局累加器,虽简洁但破坏了函数的纯度:它依赖外部状态、不可重入、难以并发调用,且单元测试需额外清理状态。
推荐采用无副作用的递归设计,有两种主流方式: