質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

3回答

2808閲覧

FuelPHPで、beforeで$thisを使用した場合

usugita_san

総合スコア221

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2015/04/07 01:41

FuelPHPのcontrollerのbeforeメソッドについてお伺いしたいです。

例えば会員制のサイトで、ログインした後、どの画面でもユーザ情報を保持していたい場合を想定してください。
controllerのbeforeメソッドで、以下のような処理を記述しました。

lang

1public function before() 2{ 3 parent::before(); 4 // ユーザ情報を取得 5 if (empty($this->user_info)) 6 { 7 $this->user_info = Model_Hogehoge_User::get_user_info('user_id'); 8 } 9}

良くわからないのは、ここで出てくる「this」の生成タイミングです。
このthisの情報は、リクエストごとに生成されると考えて良いのでしょうか?

リクエストごとに生成されるのであれば、if(empty(hogehoge))みたいにチェックする意味も無いかなとも思います。しかし、以前に見たサンプルではemptyでチェックを行っていたように覚えています。

このthisはいつ生成されるのでしょうか?
曖昧な質問で申し訳ないのですが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

その認識で合っています。

lang

1empty($this->user_info)

上記の処理を記述したクラス(もしくは親クラス)にuser_infoが定義されていればnull
定義されていなければUndefined propertyになります。

投稿2015/04/09 02:07

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usugita_san

2015/04/09 02:55

ありがとうございます。何度も確認しちゃってすみません。
guest

0

luckerさんの書かれている通り、$thisのチェックをする必要はありませんが
提示されたコードだと

lang

1empty($this->user_info)

なので、user_infoがセットされているかどうかを判定しているもので
user_infoが空であれば、新たにModel_Hogehoge_Userで取得しセットする事になると思います。
ユーザ情報を取得済であれば複数回の取得は行わい事になります。

投稿2015/04/08 00:49

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usugita_san

2015/04/09 00:45

すみません、ちょっと確認したいのですが、以下の認識であっていますでしょうか? 1.「$this」は、リクエスト単位で作られる、だからリクエストが届いた時には「$this->user_info」はnullである。
guest

0

ベストアンサー

$thisはPHPであらかじめ定義されている疑似変数で、インスタンスオブジェクト自身のことです。

ですから、インスタンスが作られた時点で自動的に参照できるようになります。

クラスの基礎

ですので、チェックする必要はありません。

投稿2015/04/07 03:18

編集2015/04/07 03:21
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usugita_san

2015/04/07 04:23

ありがとうございました。すっきりしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問