- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのオブジェクト指向の処理に関して)
オブジェクト指向処理の要約
このQ&Aのポイント
- PHPのオブジェクト指向の処理に関して
- 特定の順番で表示される理由について
- $tv->setChannel(20)の次に$tv->setChannel(10)の処理をするため、順番が異なる
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#212058
回答No.2
class の中のメンバ変数の宣言コード ( private $channelNo = 8; ) は、その class が new されたとき ( $tv = new Television(); ) に 実行されます。 従って、実際の実行順序は 1. $tv = new Television(); → このときに private $channelNo = 8; が実行される 2. $tv->setChannel(20); → このときに function setChannel メソッド内が実行される → "チャンネルは1から12の間で設定して下さい" を表示 3. print('現在のチャンネルは'.$tv->getChannel().'<br>'); → このときに function getChannel メソッド内が実行される (結果は、1.で設定した 8 が返る) → "現在のチャンネルは8" を表示 (以下略) ですね。
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
回答No.1
> $tv->setChannel(20); としても > if (($channel >= 1) and ($channel <= 12)){ > $this->channelNo = $channel; のところではじかれるからです。
補足
値をそれぞれ 「$tv->setChannel(4); $tv->setChannel(20);」 に変更すると ブラウザ上では、 「現在のチャンネルは4 チャンネルは1から12の間で設定して下さい 現在のチャンネルは4」 と表示され、「8」が表示されません。 これは、1度目の処理で、 private $channelNo = 8; の8が4に変更されたからなのでしょうか? 続けてのご質問してしまい申し訳ございません。