亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

laravel 如何避免non-object錯誤

laravel 如何避免non-object錯誤

函數式編程 2019-04-21 20:42:43
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容錯性比較大,所有找不到的元素置空,而不會報錯。)
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

對于多層的數據,使用面向對象的方式確實會有很多困難,不如改成array進行訪問——在json_decode的時候第二個參數傳true。Array取數據取不到一般只是返回null,而不是報錯。
$data['code']如果網絡異常=>null$data['result']['list']如果數據異常會報錯=>nullend($data['result']['list'])['age']如果list的某元素不包含age=>null
                            
查看完整回答
反對 回復 2019-04-21
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

$data->result->list;如果數據異常會報錯。
這里報的是non-object異常,解決的方法是通過object_get($data,'result.list','空');主要是object_get方法,你可以看看源碼。
end($data->result->list)->age;如果list的某元素不包含age會報錯(這是數據正常的情況)。
這里報的是Undefinedproperty異常,解決方法同上object_get(end($data->result->list),'age','空')
                            
查看完整回答
反對 回復 2019-04-21
  • 2 回答
  • 0 關注
  • 378 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號