我一直想知道为什么我会在PHP中使用Exceptions.我们来看一个简单的例子:
class Worker
{
public function goToWork()
{
return $isInThatMood ?
// Okay, I'll do it.
true :
// In your dreams...
false;
}
}
$worker = new Worker;
if (!$worker->goToWork())
{
if (date('l',time()) == 'Sunday')
echo "Fine, you don't have to work on Sundays...";
else
echo "Get your a** back to work!";
}
else
echo "Good.";
Run Code Online (Sandbox Code Playgroud)
我有理由对这种代码使用Exceptions吗?为什么?如何构建代码?
那些可能产生错误的代码呢:
class FileOutputter
{
public function outputFile($file)
{
if (!file_exists($file))
return false;
return file_get_contents($file);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我会在上述情况下使用例外?我有一种感觉,Exceptions可以帮助你识别出现的问题类型,是吗?
那么,我是否在此代码中正确使用了Exceptions:
class FileOutputter
{
public …Run Code Online (Sandbox Code Playgroud) 在插入数据库之前,我使用以下代码来检查重复项.对我来说,重复的只考虑重复时name,description,price,city,和enddate比赛.
foreach($states_to_add as $item) {
$dupesql = "SELECT
COUNT(*)
FROM
table
WHERE
(
name = '$name'
AND description = '$description'
AND manufacturer = '$manufacturer'
AND city ='$city'
AND price = '$price'
AND enddate = '$end_date'
)";
$duperaw = mysql_query($dupesql);
if($duperaw > 0) {
echo nl2br("$name already exists in $city \n");
}
else {
$sql = "INSERT INTO table (..... (here go the values to be inserted)
....
Run Code Online (Sandbox Code Playgroud)
在运行此检查之前定义每个值,我的结果总是在项目已存在时返回.我倾倒了"dupesql"并将命令复制/粘贴到phpmyadmin中,后者返回计数0.