20日1206-修复CropLogic未定义变量错误.md 2.6 KB

修复CropLogic未定义变量错误

任务时间

  • 开始时间:2025年06月20日 12:06
  • 完成时间:2025年06月20日 12:06

问题描述

IDE报告在 app/Module/Farm/Logics/CropLogic.php 文件第843行存在使用未赋值变量 $defaultOutput 的错误。

问题分析

在CropLogic.php的普通种子处理逻辑中(第829-849行),代码尝试使用未定义的变量 $defaultOutput

// 第831行:定义了$outputInfo变量
$outputInfo = $this->getRandomOutput($crop->seed_id);

// 第843行:错误地使用了未定义的$defaultOutput变量
'final_output_item_id' => $defaultOutput['item_id'],

// 第847行:错误地使用了未定义的$defaultOutput变量
'default_output' => $defaultOutput

解决方案

将错误的变量引用修改为正确的变量:

修改内容

  1. 第843行:将 $defaultOutput['item_id'] 修改为 $outputInfo['item_id']
  2. 第847行:将 'default_output' => $defaultOutput 修改为 'output_info' => $outputInfo

修改后的代码

// 记录确认果实种类事件
FarmCropLog::logFruitConfirmed($crop->user_id, $crop->land_id, $crop->id, $seed->id, [
    'final_output_item_id' => $outputInfo['item_id'],  // 修复:使用正确的变量
    'growth_stage' => $newStage,
    'land_type' => $crop->land->land_type ?? 1,
    'is_mystery_seed' => false,
    'output_info' => $outputInfo  // 修复:使用正确的变量
]);

技术细节

  • 文件路径app/Module/Farm/Logics/CropLogic.php
  • 修改行数:第841-848行
  • 变量来源$outputInfo 变量在第831行通过 $this->getRandomOutput($crop->seed_id) 方法获得
  • 错误类型:使用未定义变量导致的运行时错误

提交信息

修复CropLogic中未定义变量$defaultOutput的错误

- 将第843行的$defaultOutput['item_id']修改为$outputInfo['item_id']
- 将第847行的'default_output' => $defaultOutput修改为'output_info' => $outputInfo
- 使用正确的变量$outputInfo,该变量在第831行已定义
- 修复IDE报告的未赋值变量使用错误

影响范围

  • 影响模块:Farm模块 - 作物逻辑处理
  • 影响功能:普通种子进入发芽期时的果实确认日志记录
  • 风险等级:低(仅影响日志记录,不影响核心业务逻辑)

测试建议

建议测试普通种子(非神秘种子)的生长阶段变更,特别是从种子期进入发芽期的过程,确保:

  1. 作物日志正确记录
  2. 不再出现未定义变量错误
  3. 日志数据结构正确

状态

✅ 已完成并推送到远程仓库