2011-07-15 23 views
0

CodeIgniterアプリケーションの複数のコントローラでいくつかの関数にアクセスする必要があります。瞬間機能は例えば、本当に基本的なおよび少数です:コントローラーまたは作成ヘルパーを拡張する必要がありますか?

 generate_random_key() //just a random string 
     is_logged()   //check if user is logged or not 
     logged_user_only() //if unlogged, redirect 
     unlogged_user_only() //if logged, redirect 

これらの機能は、ログインするために関連しているように、私はApplication/helpers/login_helper.php

ORにヘルパーファイルと場所でそれらを置くことができるのいずれか

私はMY_Controller.phpを作成することによって、CI_Controllerを拡張し、Application/Core/MY_Controller.php

のメソッドの仕事の両方をそれを置くが、私は疑問に思ってwhicすることができますhはこの種の作業に適しています。私はコントローラが拡張されるべきとき、またはヘルパーが使用されるべきときにいくつかのルールがあるべきだと思いますか?

答えて

0

他のコントローラで(そして他のコントローラでのみ)これらの機能を使用している場合は、それらをMY_Controllerにリファクタリングすることをお勧めします。 これは、(get_instance()を呼び出す代わりに)$ CIインスタンスに直接アクセスできるようにします。

一方、認証ライブラリを作成することができます。これは、より適切かもしれません。..

EDIT ::

私は事のこのタイプを管理ライブラリから機能を呼び出す認証ラッパー関数を含ん拠点としてMY_Controllerを持つことをお勧めします。

+0

generate_random_keyはおそらく – jlb

+0

そういえヘルパーにとどまるべき拡張する必要があり、たとえば、私は、ユーザーが別のコントローラにログインされているかどうかを確認する必要があります。 – Roman

+0

私はMY_Controllerコンストラクタで認証チェックを設定するのが好きです。そうすればコントローラはそれを拡張するのではなく、自動的に認証チェックを取得します。さらに、いくつかのコントローラが(アクセス制御規則によって、またはコンストラクタparamのように単純に)それを必要としないように設定することができます。 – jlb

1

IMO、ログイン機能はコントローラとは関係ありません。それはおそらくあなたが言及した関数をヘルパーやライブラリに入れる理由です。

0

ソリューション私は考えてM:

あなたは(Javaパースペクティブからのフィルタのように動作します)、デザイン・パターンに従うhookを使用したい場合

代替があなたのMy_Controller

関連する問題