📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == クラスとは、何かを実行する物体の設計図のようなものである。<br> そして、クラスの仕様を決めるものがメソッド…」
 
129行目: 129行目:
これにより、誤った使用を未然に防止することやメンバ変数とメソッドの意味を理解しやすくなる。<br>
これにより、誤った使用を未然に防止することやメンバ変数とメソッドの意味を理解しやすくなる。<br>
<br><br>
<br><br>
== メンバ変数へのアクセスとメンバメソッドからの値の取得 ==
アクセス修飾子を設定したメンバ変数へのアクセス方法について記載する。<br>
<br>
メンバ変数を外部から直接設定できる場合は不適切な値が代入できるため、<br>
メンバ変数をprivateにして、メンバ変数の変更はメソッド経由でのみ可能にする。<br>
メソッド経由で設定することで事前に値の範囲を確認することができるため、不適切な値が代入される危険性が無くなる。<br>
<br>
また、メンバ変数の値を取得できるメソッドを別途定義することで、メンバ変数の値を取得できるようにする。<br>
<syntaxhighlight lang="php">
class Television()
{
    private $channelNo;
    public function setChannel($channel)
    {
      if(($channel >= 1) and ($channel <= 12))
      {
          $this->channelNo = $channel;
      }
    }
    public function getChannel()
    {
      return $this->channelNo;
    }
}
$tv = new Television();
$tv->setChannelNo(20);
print('現在のチャンネルは'.$tv->getChannel());
</syntaxhighlight>
<br><br>
== クラス内の定数 ==
クラスでは、定数を定義することができる。
構文は以下の通りである。
<syntaxhighlight lang="php">
class クラス名
{
    const 定数名 = 値;
}
</syntaxhighlight>
<br>
通常の定数を定義する場合はdefineを使用するが、クラス内で定数を定義する場合は、constの後に定数名を指定して、値を定義する。
変数のように$マークは付かないことに注意すること。
クラス内からクラス内の定数を参照するには、self::定数名のように記述する。
※注意
selfはカレントクラスを表す。($thisはインスタンス単位)
クラス内の定数は、クラス単位で設定されている値だからである。
<syntaxhighlight lang="php">
class クラス名
{
    const 定数名 = 値;
    public function メソッド名()
    {
      print(self::定数名);
    }
}
</syntaxhighlight>
<br>
以下の例では、チャンネル番号を指定して、1〜12番の場合はチャンネル番号を表示、それ以外の場合はエラーを表示している。<br>
<syntaxhighlight lang="php">
$tv = new Television();
$tv->setChannel(20);
print('現在のチャンネルは'.$tv->getChannel().'<br>');
$tv->setChannel(10);
print('現在のチャンネルは'.$tv->getChannel().'<br>');
class Television
{
    private $channelNo = 8;
    const MAX_CHANNEL = 12;
    const MIX_CHANNEL = 1;
    const ERROR_MSG = 'チャンネルは1から12の間で設定して下さい<br>';
    public function setChannel($channel)
    {
      if(($channel >= self::MIX_CHANNEL) && ($channel <= self::MAX_CHANNEL))
      {
          $this->channelNo = $channel;
      }
      else
      {
          print(self::ERROR_MSG);
      }
    }
    public function getChannel()
    {
      return $this->channelNo;
    }
}
</syntaxhighlight>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Web]]
[[カテゴリ:Web]]