• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのオブジェクト指向の処理に関して)

オブジェクト指向処理の要約

このQ&Aのポイント
  • PHPのオブジェクト指向の処理に関して
  • 特定の順番で表示される理由について
  • $tv->setChannel(20)の次に$tv->setChannel(10)の処理をするため、順番が異なる

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
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" を表示  (以下略) ですね。

sryou1985kun
質問者

補足

値をそれぞれ 「$tv->setChannel(4); $tv->setChannel(20);」 に変更すると ブラウザ上では、 「現在のチャンネルは4 チャンネルは1から12の間で設定して下さい 現在のチャンネルは4」 と表示され、「8」が表示されません。 これは、1度目の処理で、 private $channelNo = 8; の8が4に変更されたからなのでしょうか? 続けてのご質問してしまい申し訳ございません。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

> $tv->setChannel(20); としても > if (($channel >= 1) and ($channel <= 12)){ > $this->channelNo = $channel; のところではじかれるからです。

関連するQ&A