- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpのthis)
なぜtry.phpでは$thisで$idにアクセスできるのか?a.phpでは$thisで$valにアクセスできないのか?
このQ&Aのポイント
- try.phpでは、classを付けてクラス作成しているため、$idに$thisでアクセスできます。
- a.phpでは、関数method内での$thisは使えません。変数$valにアクセスするためには、関数内でグローバル変数として宣言する必要があります。
- try.phpのset_id関数はreturn文がないため、returnでもない理由で$thisで$idにアクセスできるわけではありません。$idにアクセスできるのは、クラス内のメソッドからのみです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> なぜ、try.phpでは、$idにthisでアクセスできるのでしょうか? そういう言語仕様だからでは? http://php.net/manual/ja/language.oop5.basic.php | メソッドがオブジェクトコンテキストからコールされる場合は、 疑似変数 $this が利用可能です。 と書いてあります。 > try.phpは、classを付けてクラス作成しているから、$idにthisでアクセスできるのでしょうか? なおかつ、newでそのクラスのオブジェクトを生成しているからですね。 言語仕様通りに理解すれば、newでオブジェクトを作成し、そのメソッドを呼んでいる場合は$thisが設定されていますが、そうでない場合は$thisは設定されていないと思います。 つまり、try.phpを使っている場合でも、 $user = new User(); $user->set_id("my id"); echo $user->get_id(); だと、"my id"と表示されると思いますが、 User::set_id("my id"); echo User::get_id(); だとエラーになるか、何も表示されないと思います。
お礼
>そういう言語仕様だからでは? やはりそういうことなのですね。 ちょっとそこが不安で心配だったので質問させていただきました。 ありがとうございました。