This is my try/catch block in PHP:
try
{
$api = new api($_GET["id"]);
echo $api -> processRequest();
} catch (Exception $e) {
$error = array("error" => $e->getMessage());
echo json_encode($error);
}
When there is nothing in the $_GET["id"]
, I still get the notice error.
How can I avoid getting this error?
use isset
function to check if the variable is set or not:
if( isset($_GET['id'])){
$api = new api($_GET["id"]);
echo $api -> processRequest();
}
If you want a fast and "dirty" solution, you can use
$api = new api(@$_GET["id"]);
Edit:
Since PHP 7.0 there is a much better and accepted solution: using the null coalescing operator (??). With it you can shorten your code to
$api = new api($_GET["id"] ?? null);
and you don't get a notice because you defined what should happen in the case the variable is not defined.
If the absence of id means nothing should then be processed, then you should be testing for the absence of the id, and managing the failure gracefully.
if(!isset($_GET['id'] || empty($_GET['id']){
// abort early
}
THEN go on and do you try/catch.
Unless of course you were to add some smartness to api() so that is responded with a default id, that you'd declare in the function
function api($id = 1) {}
So, it "all depends", but try and fail early if you can.
Try checking if the $_GET
was set
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);
}