なぜか質問を投稿すると反映されない。。 何かしら問題があってはじかれている??
PHPのクラスメソッドをコールバックに割り当てる
クラス初期化時にコールバックを引数として渡し、特定のメソッドで実行させる。
今回の用途としては、ユーザ認証クラスを作成したのだが、
使用するデータベースの構成によってはカラム名が異なったりと使いまわすことが出来ない。
なので、セッションの継続やログアウト処理は不動のメソッドとして作成し、
ユーザ認証処理のみクラス初期化時にコールバック関数として渡すようにした。
実際には、コールバック関数でSQLを実行させるのだが、
今回は分かりやすいように四則計算に置き換えた。
class Auth{
public function __construct( $cb ){
$this->functions['foo'] = $cb->bindTo( $this, get_class($this) );
}
public function __call( $method, $args ){
$cb = $this->functions[ $method ];
return call_user_func_array( $cb, $args );
}
}
$cb1 = function( $a, $b){
echo $a + $b;
};
$auth1 = new Auth($cb1);
$auth1->foo( 2, 3 );
/* 5 */
$cb2 = function( $a, $b ){
echo $a * $b;
};
$auth2 = new Auth($cb2);
$auth2->foo( 2, 3 );
/* 6 */
※fooは適宜好きなメソッド名に変えてかまわない。
検索

コメントを残す