http://www.phpbook.jp/tutorial/member/index4.htmlに下記のオブジェクト指向を含んだスクリプトがありました。
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
$tv = new Television();
$tv->setChannel(20);
print('現在のチャンネルは'.$tv->getChannel().'<br>');
$tv->setChannel(10);
print('現在のチャンネルは'.$tv->getChannel().'<br>');
class Television{
private $channelNo = 8;
function setChannel($channel){
if (($channel >= 1) and ($channel <= 12)){
$this->channelNo = $channel;
}else{
print('チャンネルは1から12の間で設定して下さい<br>');
}
}
function getChannel(){
return $this->channelNo;
}
}
?>
</body>
</html>
これをブラウザ経由でみますと、
「チャンネルは1から12の間で設定して下さい
現在のチャンネルは8
現在のチャンネルは10」
と表示されます。
なぜ、この順番で表示されるのでしょうか?
個人的には、$tv->setChannel(20)の次に$tv->setChannel(10)の処理をしますので、
「チャンネルは1から12の間で設定して下さい
現在のチャンネルは10
現在のチャンネルは8」
の順番ではないかと思っております。
もしよろしければ、教えてください。お願いします。
No.1
- 回答日時:
> $tv->setChannel(20);
としても
> if (($channel >= 1) and ($channel <= 12)){
> $this->channelNo = $channel;
のところではじかれるからです。
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" を表示
(以下略)
ですね。
この回答への補足
値をそれぞれ
「$tv->setChannel(4);
$tv->setChannel(20);」
に変更すると
ブラウザ上では、
「現在のチャンネルは4
チャンネルは1から12の間で設定して下さい
現在のチャンネルは4」
と表示され、「8」が表示されません。
これは、1度目の処理で、
private $channelNo = 8;
の8が4に変更されたからなのでしょうか?
続けてのご質問してしまい申し訳ございません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- YouTube YouTubeに「教えてDaigo!」というチャンネルがあるのですが、チャンネル名が「教えて!goo 2 2022/09/06 16:24
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- YouTube このYouTubeチャンネルの動画のBGM名が知りたい 1 2022/07/17 10:53
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- YouTube チャンネルの全動画に抜けがたくさんある 2 2022/11/09 04:53
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
$_SERVER["QUERY_STRING"]の仕...
-
PHP ハイパーリンク
-
microtime関数は、結構イイカゲ...
-
初歩的な質問だと思います。IF...
-
PHPでwait処理ってできます?
-
SQLのデータを分割してブラウザ...
-
Luaにて、and or の組み合わせ...
-
PHPでのNULLの正規表現
-
データ)表示件数について
-
switch()文で値の大小比較
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
ActiveReportのサブレポート機...
-
DMMの動画を全件取得したのです...
-
wordの差し込み印刷で文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付を基にした乱数生成
-
<A href ~で複数の値を渡したい
-
「次の10件を表示する」のよ...
-
PHPでwait処理ってできます?
-
POSTされたかどうか確かめる方...
-
PHPのif文「POSTしていな...
-
PHPでのNULLの正規表現
-
テーブルに送信ボタンをつける
-
if (isset($_a)&&$_a)この意味は
-
逆順表示したい?
-
if文の複数条件。
-
PHP フラグ
-
PHP ハイパーリンク
-
null代入とunset()の違いについて
-
SQLのデータを分割してブラウザ...
-
$_SERVER["QUERY_STRING"]の仕...
-
Luaにて、and or の組み合わせ...
-
whileループの中でフォーム入力...
-
switch文で2つ以上の変数の値...
-
parse_ini_fileでダブルクォー...
おすすめ情報