2

私は自分の Codeigniter パッケージに Tank Auth ライブラリをインストールしました。問題は、関数を呼び出す必要がある方法が気に入らないことです。これはis_logged_in、使用する必要があるため、単純に長く、あまりフレンドリーではないためです。

$this->tank_auth->is_logged_in()

ユーザーがログインしているかどうかを確認したいたびに...それを短くする方法はありますか? 短く言うと、次のような意味$this->logged();ですか?

誰かが私を助けてくれれば本当に感謝しています。

ありがとうございました。

4

3 に答える 3

2

ライブラリに向かいtank_auth、新しいパブリック関数を定義します。

public function logged(){
    return $this->is_logged_in();
}

でアクセスできるようになりました$this->tank_auth->logged();

の名前を短くしたい場合はtank_auth、クラスとファイル名の名前を変更する必要があります。

アップデート:

より重要な質問は、なぜこれを何度も呼び出して迷惑になっているのかということです。コードが Don't Repeat Yourself (DRY) 原則に従っている場合は、一度だけ記述する必要があります。

Phil Sturgeon のKeeping It DRYというタイトルのブログ記事をご覧ください。彼は、すべてのコントローラーが継承する基本コントローラーの作成方法を示します。基本コントローラーのコンストラクターにログインチェックを記述すれば、すべてのコントローラーに記述する必要はありません。

于 2012-09-10T22:39:33.270 に答える
0

TankAuthライブラリを作成していない場合は、ライブラリの更新可能性に影響するため、ライブラリ内の何も編集したくないでしょう。代わりに、呼び出されるコントローラーにメソッドを追加しloggedて、Tank Auth にアクセスさせることができます。ただし、以前の回答で指摘されているように、関数のより良い名前を選択します。

コントローラーの基本クラスを作成または編集して、次のようにします。

function is_logged() {
   return $this->tank_auth->is_logged_in();
}

次に、次のように呼び出すことができます。$this->is_logged();

于 2012-09-10T22:43:51.947 に答える
0

インスタンスのメソッドlogged()にはコンテキストがないため、これを行うことに反対します。ただし、これを行いたい場合は、最終logged()的に を返すメソッドを持つ基本コントローラーを作成できます$this->tank_auth->is_logged_in()。すべてのコントローラーはこの基本コントローラーから継承されますが、これは最初から悪い考えではありません。

ライブラリを使用している場合は、それらに同様のパターンを実装できます。

于 2012-09-10T22:40:05.937 に答える