【发布时间】:2012-03-04 08:50:15
【问题描述】:
在使用 try catch 块时,处理 PDO 错误的好方法是什么?
目前我有这样的事情:
BlogModel.php
class BlogModel extends Model {
public function save($id, $value) {
$stmt = $this->getDb()->prepare('UPDATE setting SET name = :name WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->bindParam(':name', $values);
return ($stmt->execute() !== false) ? $id : false;
}
}
所以,在控制器 BlogController.php 中,我会做这样的事情:
<?php
class Blog extends Controller {
public function comments()
{
$data = array();
$model = new BlogModel;
if ($model->save(2,'test')) {
$data['result']['message'] = 'Settings saved';
$data['result']['status'] = 'success';
} else {
$data['result']['message'] = 'Could not save the settings';
$data['result']['status'] = 'error';
}
$view = new View("view.php", $data)
$view->render();
}
}
?>
这是我使用if 条件处理 PDO 错误的方式。将其转换为 try catch 块的体面方法是什么?我不想一直编码变量($data['result']['message']$data['result']['status'])。
是否可以在 catch 块中以某种方式添加“抛出异常”?
如果控制器中有很多 try catch 块,它看起来会很乱……对吧?
【问题讨论】:
-
只是好奇:这是 CakePHP 吗?我说不出来。
-
@SimpleCoder 我自己写的 MVC ;)
-
哦,整洁。我想直接使用 PDO 应该放弃这一点,而不是 Cake 的 db 接口。
-
您可能会发现此 PHP 文档页面很有用 php.net/manual/en/class.pdoexception.php
-
看看example here。你可以删掉所有无用的 html,但你明白了要点......