我目前正在开发我的PHP SDK以与REST API进行交互。我们假设API可以创建一个“汽车”。模型。要创造一辆汽车我会写这样的......
$car = $api->create('car', array(
'wheels' => 6,
'color' => 'blue'
));
如果其他开发者下载我的SDK并尝试错误地创建汽车模型并忘记包含必需的参数。如何通过SDK抛出异常以通知开发人员缺少参数,除了他们看到像Warning: Missing argument 1 for BMW::create()
这样的PHP错误,其中不包含许多细节。
答案 0 :(得分:5)
function foo($bar, $baz) {
if (!isset($bar, $baz)) {
throw new InvalidArgumentException("Detailed description of what's wrong here");
}
...
}
PHP会触发警告,但仍会像往常一样执行你的功能(这是......哦,好吧,我们不要纠缠于此)。这意味着您可以在函数内部进行常规参数检查,并根据需要尽可能详细地抛出异常或trigger_error
。
答案 1 :(得分:0)
请浏览此页面...
http://php.net/manual/en/language.exceptions.php
尝试类似下面的内容
<?php
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo "Hello World\n";
?>
答案 2 :(得分:0)
从PHP 7.1开始,使用很少参数的用户定义函数将导致Error异常。您不需要自己实现功能。