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 には、本来のメソッド名が渡されます。
モデルのメソッド名と、コールバックメソッドの対応は下記の通りです。
| メソッド |
前処理 |
後処理 |
| getCount | beforeSelect | afterSelect |
| selectOne | beforeSelect | afterSelect |
| select | beforeSelect | afterSelect |
| selectForUpdate | beforeSelect | afterSelect |
| getRows | beforeSelect | afterSelect |
| save (insert) | beforeInsert | afterInsert |
| save (update) | beforeUpdate | afterUpdate |
| insert | beforeInsert | afterInsert |
| update | beforeUpdate | afterUpdate |
| delete | beforeDelete | afterDelete |
関連項目