laravel如何避免non-object错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了laravel如何避免non-object错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1639字,纯文字阅读大概需要3分钟。
内容图文
![laravel如何避免non-object错误](/upload/InfoBanner/zyjiaocheng/239/ddefa66ffbcc4645bfb50561f7e004d5.jpg)
可能的数据结构:
1.{'code':200,'result':{'list':['name':'hello','age':18],['name':'world']}}
2.{'code':204,'result':'wrong'}
3.网络异常获取不到数据。
$data->code; 如果网络异常会报错
$data->result->list; 如果数据异常会报错
end($data->result->list)->age; 如果list的某元素不包含age会报错(这是数据正常的情况)
请问怎么配置或编码可以提高laravel的容错性(比如原生的php容错性比较大,所有找不到的元素置空,而不会报错。)
回复内容:
laravel调用第三方api的时候,太依赖于第三方的数据结构了,如果第三方结构稍微调整,网页就直接报错。
可能的数据结构:
1.{'code':200,'result':{'list':['name':'hello','age':18],['name':'world']}}
2.{'code':204,'result':'wrong'}
3.网络异常获取不到数据。
$data->code; 如果网络异常会报错
$data->result->list; 如果数据异常会报错
end($data->result->list)->age; 如果list的某元素不包含age会报错(这是数据正常的情况)
请问怎么配置或编码可以提高laravel的容错性(比如原生的php容错性比较大,所有找不到的元素置空,而不会报错。)
对于多层的数据,使用面向对象的方式确实会有很多困难,不如改成array进行访问 —— 在json_decode
的时候第二个参数传true
。 Array
取数据取不到一般只是返回null
,而不是报错。
$data['code']
如果网络异常 => null
$data['result']['list']
如果数据异常会报错 => null
end($data['result']['list'])['age']
如果list的某元素不包含age => null
$data->result->list; 如果数据异常会报错。
这里报的是non-object异常, 解决的方法是通过 object_get($data, 'result.list', '空');主要是object_get方法,你可以看看源码。end($data->result->list)->age; 如果list的某元素不包含age会报错(这是数据正常的情况)。
这里报的是 Undefined property 异常, 解决方法同上 object_get(end($data->result->list), 'age','空')
内容总结
以上是互联网集市为您收集整理的laravel如何避免non-object错误全部内容,希望文章能够帮你解决laravel如何避免non-object错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。