コールバックを実装する | Database

selectやsave、deleteなど各メソッド実行前・実行後に実行されるコールバックメソッドをモデルに定義することができます。 前処理(beforeXXX)でNULL以外の何らかの値を返すと、本来のメソッドはスキップされます。また、後処理(afterXXX)コールバックの引数にはメソッドの実行結果(前処理で値を返した場合はそれ)が渡されます。

例えば下記のように、コールバックメソッドを実装すると、selectの戻り値は必ず空の配列となります。
class MyModel extends Sabel_Db_Model
{
  public function beforeSelect($method)
  {
    return array();
  }
}
そして、afterSelect を下記のように実装すれば、戻り値は必ず false となります。
なお、$result には空の配列(beforeSelectの戻り値)が渡ってきます。
class Mymodel extends Sabel_Db_Model
{
  public function beforeSelect($method)
  {
    return array();
  }
  
  public function afterResult($result, $method)
  {
    return false;
  }
}
なお、双方のメソッドの引数 $method には、本来のメソッド名が渡されます。
モデルのメソッド名と、コールバックメソッドの対応は下記の通りです。

メソッド 前処理 後処理
getCountbeforeSelectafterSelect
selectOnebeforeSelectafterSelect
selectbeforeSelectafterSelect
selectForUpdatebeforeSelectafterSelect
getRowsbeforeSelectafterSelect
save (insert)beforeInsertafterInsert
save (update)beforeUpdateafterUpdate
insertbeforeInsertafterInsert
updatebeforeUpdateafterUpdate
deletebeforeDeleteafterDelete

関連項目