前提・実現したいこと
外部のAPIからJSONで値を受け取っています。
仮に受け取る値に変更があったとき、その値をもとに書いたこちらのコードは「Undefined variable」のエラーで止まってしまいます。
この事態に備えたコードについてご相談したく存じます。
発生している問題・エラーメッセージ
現状のAPIからの受け取り値は
['one'=>1] なので
$result = $api_response['one']; で展開できます。
しかし仮に受け取り値が ['two'=>1] となった場合、上記の展開ではエラーとなります。
これに備えたいです。
`
該当のソースコード
<?php $api_response = ['one'=>1]; $result = $api_response['one']; // 受け取る値が'two'になったときエラーになってしまう return $result;
試したこと
$undefinedsを置きました。
存在しないときはこれに値を入れ、これが空でない場合は独自のエラーを投げるようにしてみました。
<?php $api_response = ['two'=>1]; // 受け取る値が'two'になった! $undefineds = []; // 存在しないときはこれに値を入れる try{ $result = $api_response['one'] ?? ($undefineds[] = 'two'); if( !empty($undefineds) ){ throw new Exception('undefinedsが空じゃないから、APIの仕様が変更したっぽいよ'); } }catch(Exception $e){ $result = $e->getMessage(); } return $result;
これでできたのですが、でもこれをするならそもそもtry、throw、catchなどを使わず、すべて!empty($undefineds)で判定した方が統一感があるような気がいたします。
何か良い方法などないかと思い、調べた結果こちらにたどり着きました。
どうぞ宜しくお願い申し上げます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 06:34 編集
2020/07/04 11:39 編集