クラス内の定数

広告

クラス内で定数を定義することができます。定数は固定の値である必要があります。構文は下記の通りです。

class クラス名(){
  const 定数名 = 値;
}

PHPで定数を定義するには"define"を使いますが、クラス内部で定義する場合には"const"の後に定数の名前を指定し、値を定義します。変数のように"$"マークは定数名の頭には付きませんので注意して下さい。

またクラス内からこの定数の値を参照するには"self::定数名"のように記述します。

class クラス名(){
  const 定数名 = 値;

  function メソッド名(){
    print(self::定数名);
  }
}

※「self」はカレントクラスを表します。「$this」はオブジェクト毎ですけど「self」はクラスとして考える場合に使います。定数はオブジェクト毎ではなくクラス単位で設定されている値だからです。

サンプルコード

では実際に試しておきましょう。下記は前のページのサンプルを定数を使って書き換えたものです。

<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;

  const MAX_CHANNEL = 12;
  const MIX_CHANNEL = 1;
  const ERROR_MSG = 'チャンネルは1から12の間で設定して下さい<br>';

  function setChannel($channel){
    if (($channel >= self::MIX_CHANNEL) and
        ($channel <= self::MAX_CHANNEL)){

      $this->channelNo = $channel;
    }else{
      print(self::ERROR_MSG);
    }
  }

  function getChannel(){
    return $this->channelNo;
  }
}

?>
</body>
</html>

上記のファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。

クラス内の定数

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。