2013-08-06 8 views
12

を使用してが、未定義のインデックスこれは、PHPでの私のtry/catchブロックである:PHPのお知らせ:トライキャッチ

try 
{ 
    $api = new api($_GET["id"]); 
    echo $api -> processRequest(); 
} catch (Exception $e) { 
    $error = array("error" => $e->getMessage()); 
    echo json_encode($error); 
} 

$_GET["id"]で何もないとき、私はまだ通知エラーを取得します。 このエラーが発生しないようにするにはどうすればよいですか?変数が設定されているかどうかをチェックする

+2

使用 'ISSET($ _ GET [ 'IDを'])を使用することができます;'この質問のために数百万の複製があります。 – dbf

+0

if(isset($ _ GET ['id'])){$ api = new api($ _ GET ['id']); } – Maximus2012

+7

PHP通知は例外ではありません。 – sangaran

答えて

21

使用isset機能:IDが存在しない場合は、何も、その後に処理されるべきでない意味場合$_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); 
} 
0

はチェックをお試しください、 IDの不在をテストし、正常に障害を管理する必要があります。

if(!isset($_GET['id'] || empty($_GET['id']){ 
// abort early 
} 

次に試してみてください。

は、コースの場合を除き、あなたは、APIへのいくつかの粋を()を追加することであったようには、あなたはそれが「すべてが依存」、

function api($id = 1) {} 

だから、関数内で宣言するだろうと、デフォルトのIDで応答されていますが、できるだけ早く試してください。

1

に設定されていた場合

if(isset($_GET['id'])){ 
    $api = new api($_GET["id"]); 
    echo $api -> processRequest(); 
} 
+0

変数が設定されていない場合、' empty() 'は通知を発行しません。したがって、 'isset()'は不要です。 –

0

あなたは高速で、 "汚い" ソリューションをしたい場合は、 `や` array_key_exists( 'ID'、$ _GET)

$api = new api(@$_GET["id"]); 
+11

家庭の子供にとっては、これは確かに汚れたものであり、これは解決策ではありません。 –

+1

@JasonMcCreary +1自宅の子供のための.. –

関連する問題