これは私のPHPのtry/catchブロックです。
try
{
$api = new api($_GET["id"]);
echo $api -> processRequest();
} catch (Exception $e) {
$error = array("error" => $e->getMessage());
echo json_encode($error);
}
$_GET["id"]
に何もない場合でも、通知エラーが発生します。このエラーを回避するにはどうすればよいですか?
isset
関数を使用して、変数が設定されているかどうかを確認します。
if( isset($_GET['id'])){
$api = new api($_GET["id"]);
echo $api -> processRequest();
}
高速で「ダーティ」なソリューションが必要な場合は、
$api = new api(@$_GET["id"]);
編集:
PHP 7.0なので、 null合体演算子(??) を使用することで、はるかに優れた一般的な解決策があります。これを使用すると、コードを次のように短縮できます。
$api = new api($_GET["id"] ?? null);
変数が定義されていない場合にどうなるかを定義したので、通知を受け取りません。
IDがないことが何も処理されないことを意味する場合、IDがないことをテストし、障害を適切に管理する必要があります。
if(!isset($_GET['id'] || empty($_GET['id']){
// abort early
}
その後、続けて、あなたはトライ/キャッチしますか?.
もちろんapi()にスマートさを追加してデフォルトのIDで応答する場合を除き、関数で宣言します
function api($id = 1) {}
したがって、それは「すべてに依存」しますが、可能であれば早期に失敗します。
$_GET
が設定されました
try
{
if(isset($_GET["id"]))
{
$api = new api($_GET["id"]);
echo $api -> processRequest();
}
} catch (Exception $e) {
$error = array("error" => $e->getMessage());
echo json_encode($error);
}