如何在Beanstalkd库1.13+1+g91c54fc版本中访问storage:ArrayObject:private属性
提取Pheanstalk ArrayResponse中的私有storage数组数据
针对你使用Beanstalkd 1.13+1+g91c54fc版本,无法获取ArrayResponse对象中私有storage数组的问题,直接访问私有属性行不通,可通过以下几种方式提取数据:
使用ArrayObject的
getArrayCopy()方法
由于Pheanstalk\Response\ArrayResponse继承自PHP的ArrayObject,调用其公共方法getArrayCopy()可直接获取内部存储的数组:// 假设$response是你得到的ArrayResponse对象 $storageData = $response->getArrayCopy(); // 直接使用数组中的数据 $tubeName = $storageData['name']; $readyJobsCount = $storageData['current-jobs-ready'];直接以数组方式访问
ArrayObject实现了ArrayAccess接口,可像操作普通数组一样直接访问对象元素:// 获取单个字段值 $totalJobs = $response['total-jobs']; $pauseTimeLeft = $response['pause-time-left'];类型转换为数组(不推荐)
虽可将对象强制转为数组,但转换后的键名会包含私有属性的命名空间标识,需额外处理,因此不建议使用:$responseArray = (array)$response; // 键名会变成 "\x00ArrayObject\x00storage" $storageData = $responseArray["\x00ArrayObject\x00storage"];
最简洁可靠的方式是使用getArrayCopy()方法,它能直接返回你需要的完整数组数据。
内容的提问来源于stack exchange,提问作者Vishal Rai
相关产品推荐
相关产品推荐

