ワイズリマインダー

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は適宜好きなメソッド名に変えてかまわない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

検索

最近のコメント

最近の投稿

タグ

フィード配信

アーカイブ

外部リンク