我有一個關於codeigniter中錯誤處理的問題。 我的第一個問題是誰應該調用show_error方法?模型或控制器或視圖? 我打算把它放在這個特定案例的模型中,因爲模型是產生錯誤的地方,但由於我的大部分業務邏輯都在控制器中,我決定在那裏做。 BUT我想知道是否有「正確」的方式來做到這一點。codeigniter中的錯誤處理:誰應該調用show_error()
我的第二個問題是這個。在模型中,我添加了兩個函數 - 一個返回數據,另一個返回錯誤消息。我的控制器在調用我的模型後測試錯誤情況,並嘗試顯示它。但它總是空的。
我的模型看起來是這樣的:
public function errormessage()
{
return $this->_emess;
}
public someotherfunction()
{
if ($switch_obj->connect())
{
$retdata = $switch->showInterfaceAll();
$switch->disconnect();
$this->_data = $retdata;
return true;
}
else
{
print 'debug: assigning error message in model:';
$this->_emess = $switch->errormessage();
print $this->_emess;
return false;
}
}
然後在我的控制,我有以下邏輯:
if ($this->switches_model->someotherfunction($this->uri->segment(7)))
{
$data['listofports'] = $this->switches_model->data;
}
else {
print '<BR>in error path<BR>';
show_error($this->switches_model->errormessage(), 123);
}
從模型我調試打印語句,我知道一個錯誤消息已設置。但是,當控制器嘗試使用show_error()方法顯示它時,我收到以下錯誤消息:
沒有狀態文本可用。請檢查您的狀態代碼號碼或 提供您自己的消息文本。
爲了證明它不是因爲該模型已經被銷燬,我試圖在我的模型加入了析構函數,並打印出調試行...
public function __destruct()
{
print 'in the destructor';
}
消息「錯誤路徑」是在「析構函數」之前打印的,所以我假設模型仍然活着,並且...
任何建議,將不勝感激。
謝謝。
更新1
,我發現我的問題。如果你打算傳一個合法的狀態碼,你需要傳遞一個合法的狀態碼。 我以爲你可以創建自定義狀態號碼,但他們必須是HTTP代碼。但是如果有人可以對問題1發表評論,請問誰應該調用show_error(),這會非常感激。 謝謝。
100%同意你的看法。你已經得到了我的投票。 – ivanargulo