扫码关注官方订阅号
认证高级PHP讲师
我把你的代码copy了一份运行了一下,没有报找不到类的错,可能找不到类的问题多半确实如楼上所说,没有编译,但是我的代码编译后运行还是报错,报的空指针的
简单看了一下你报错的地方,是查询完product,再去增加库存的时候,prod为null,所以报错
为啥prod为null,是因为debug可以看到,你的manager类初始化后的prod集合为空,所以根据id找不到对应的prod
有待改进问题一:根据id去查询数据后,本身查询方法默认的初始值就是null了,所以在调用查询方法时,就本身应该考虑这个查询方法是可能返回null的,所以应该要再调用完查询方法后,首先检查一下是否为null,再做后续操作
那为啥这个manager类里的prod集合大小为0呢?你前面也有增加prod的操作的
其实问题就是出在这个manager增加prod的方法里,查看StockManager.addProduct
可以看到,你的逻辑估计是想做图上所说的两个事,但是这样做,有些问题有待改进问题二:最开始的时候集合stock就是空的,所以第一次addprodcut的时候,这个for循环就走不进去,所以后续也走不进去,因为你的stock.add方法写在循环里了,所以stock集合一直为空有待改进问题三:list集合本身add方法默认就是添加到集合最后的,所以没有必要去判断循环的位置,只要前面检验id不同了,就可以直接调用所以建议以下修改:
修改后,程序看起来是正常了,起码没有报错,至于业务上(比如库存)是否有问题,你自己再多多斟酌一下
请问你编译了吗
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我把你的代码copy了一份运行了一下,没有报找不到类的错,可能找不到类的问题多半确实如楼上所说,没有编译,但是我的代码编译后运行还是报错,报的空指针的
简单看了一下你报错的地方,是查询完product,再去增加库存的时候,prod为null,所以报错
为啥prod为null,是因为debug可以看到,你的manager类初始化后的prod集合为空,所以根据id找不到对应的prod
有待改进问题一:
根据id去查询数据后,本身查询方法默认的初始值就是null了,所以在调用查询方法时,就本身应该考虑这个查询方法是可能返回null的,所以应该要再调用完查询方法后,首先检查一下是否为null,再做后续操作
那为啥这个manager类里的prod集合大小为0呢?你前面也有增加prod的操作的
其实问题就是出在这个manager增加prod的方法里,查看StockManager.addProduct
可以看到,你的逻辑估计是想做图上所说的两个事,但是这样做,有些问题
有待改进问题二:
最开始的时候集合stock就是空的,所以第一次addprodcut的时候,这个for循环就走不进去,所以后续也走不进去,因为你的stock.add方法写在循环里了,所以stock集合一直为空
有待改进问题三:
list集合本身add方法默认就是添加到集合最后的,所以没有必要去判断循环的位置,只要前面检验id不同了,就可以直接调用
所以建议以下修改:
修改后,程序看起来是正常了,起码没有报错,至于业务上(比如库存)是否有问题,你自己再多多斟酌一下
请问你编译了吗