codeigniter のエラー処理について質問があります。私の最初の質問は、誰が show_error メソッドを呼び出す必要があるかということです。モデルかコントローラーかビューか?モデルはエラーが生成される場所であるため、この特定のケースのモデルに配置するつもりでしたが、ビジネスロジックのほとんどはコントローラーにあるため、そこで行うことにしました。しかし、これを行う「正しい」方法があるかどうか知りたいです。
私の2番目の質問はこれです。モデルには、データを返す関数とエラー メッセージを返す関数の 2 つの関数を追加しました。モデルを呼び出した後、コントローラーがエラー状態をテストし、それを表示しようとします。しかし、常に空です。
私のモデルは次のようになります。
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);
}
モデルの debug print ステートメントから、エラー メッセージが設定されていることがわかります。しかし、コントローラが show_error() メソッドを使用して表示しようとするまでに、次のエラー メッセージが表示されます。
ステータス テキストはありません。ステータス コード番号を確認するか、独自のメッセージ テキストを入力してください。
モデルがすでに破棄されているためではないことを証明するために、モデルにデストラクタを追加して、デバッグ行を出力してみました...
public function __destruct()
{
print 'in the destructor';
}
「in error path」というメッセージは「in the destructor」の前に出力されるので、モデルはまだ健在であると想定しています...
任意の提案をいただければ幸いです。
ありがとう。
更新 1
問題が見つかりました。正当なステータス コードを渡す場合は、正当なステータス コードを渡す必要があります。カスタム ステータス番号を作成できると思っていましたが、HTTP コードである必要があります。しかし、誰が show_error() を呼び出すべきかについての質問 1 について誰かがコメントできれば、それは大歓迎です。ありがとう。