ITコラム

php const

PHP

2019.01.16

PHP【 const 】オブジェクト定数の定義

例えば 消費税の税率など、プログラム内で変える必要のないデータを扱う場合には、変数ではなく定数を使用します。
PHP では、関数 define を使って定数を定義する方法の他に、キーワード const を使って定数を定義する方法があります。
今回は、PHP のキーワード const で定数を定義する方法について紹介したいと思います。
( 関数 define を使って定数を定義する方法については、PHP【 define 】グローバル定数の定義をご参照下さい。)

尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

最終更新日:2019年2月3日

目次

1.定数とは
2.const の書き方
3.オブジェクト定数
4.const と define
5.const を使用したサンプル
  

1.定数とは

 
定数も 変数と同様にデータを入れる入れ物のようなものですが、変数と違って一度入れたデータの値を変更することができません。

例えば、会計システムで、消費税率を定数で定義しておくと、商品価格に定数をかけて税込み金額を算出することができます。
このように、プログラム内で変える必要のないデータを定数として定義します。

キーワード const を使って定数を定義する場合は、次のように記述します。

const 定数名 = 値;

定数も 変数と同様に 数値や文字列、ブール型データ(true と false)など、様々な型のデータを定義して使用します。

▲目次へ戻る

 

2.const の書き方

 
PHP では、キーワード const を使って定数を次のように定義します。

const VAT = 1.1;

上記は、数値データ「 1.1 」を定数「 VAT 」として定義しています。

const を使用する場合、定数名として使用可能な文字は半角英数字とアンダースコア( _ )のみで、英字の大文字と小文字は区別して認識されます。

一般的に、定数名は大文字の英数字とアンダースコア( _ )で命名します。
変数と定数を区別するためにも、この慣例に従うのが望ましいです。

▲目次へ戻る

 

3.オブジェクト定数

 
関数 define を使って定義された定数がグローバル定数といわれるのに対して、キーワード const を使用して定義された定数は オブジェクト定数といいます。

オブジェクト定数は、グローバル定数と違って、定義場所と参照方法にルールがあります。
 

オブジェクト定数の定義場所

オブジェクト定数は、クラスやインターフェイスの中で定義します。

define ( グローバル定数1, 値 );
define ( グローバル定数2, 値 );
 ・
 ・
 ・

interface インエターフェイス1
{
 ・
 ・
 ・
}

class クラス1
{
 const オブジェクト定数1 = 値;
 const オブジェクト定数2 = 値;
 ・
 ・
 ・

 function 関数名1() {
  処理・・・
 }

 function 関数名2() {
  処理・・・
 }
 ・
 ・
 ・
}

PHP は、処理のまとまりをクラスやインターフェイスという形で上記のように記述していきますが、const は基本的にクラスやインターフェイスの中に記述してオブジェクト定数を定義します。
 

オブジェクト定数の参照方法

オブジェクト定数は、次のように記述して格納された値を参照します。

class クラス1
{
 const オブジェクト定数1 = 値;
 ・
 ・
 ・

 function 関数名1() {
  echo self::オブジェクト定数1;
  処理・・・
 }
 ・
 ・
 ・
}

echo クラス1::オブジェクト定数1;

オブジェクト定数の定義場所と参照場所が同じクラス内(又はインターフェイス内)の場合は「 self::オブジェクト定数名 」と記述して定数の値を参照します。

オブジェクト定数を、定義場所の外側で参照する場合は「 定義場所のクラス名::オブジェクト定数名 」と記述して定数の値を参照します( 定義場所がインターフェイス内の場合は「 定義場所のインターフェイス名::オブジェクト定数名 」)。

    ▲目次へ戻る

     

    4.const と define

     
    const と define の大きな違いは、define が関数である点です。

    関数である define より、関数ではない const の方が早く処理されます。

    一方で、define は関数であるため、定数の値として 例えば戻り値のある関数を格納することもできます。

    このような違いを意識して、define を使う特段の理由がなければ const で定数定義をするのが良いです。

    ▲目次へ戻る

     

    5.const を使用したサンプル

     
    const で定義した定数を使用してみます。

    ソースファイルを以下のように作成します。
    ( ソースファイルの作成方法についてはソースファイルを作成をご参照下さい。)

    <?php
    
    class SampleClass
    {
      const CONST_C1 = "オブジェクト定数1";
      const CONST_C2 = "オブジェクト定数2";
    
      function sampleFunc(){
        echo self::CONST_C1;
      }
    }
    
    $sample = new SampleClass();
    $sample->sampleFunc();
    
    echo SampleClass::CONST_C2;
    
    ?>
    

    クラス SampleClass 内でオブジェクト定数を定義して、同じクラス内の関数 sampleFunc と クラス外とでそれぞれ参照しています。

    クラス内の関数を実行する際には、「 $sample = new SampleClass(); 」のように記述( クラスのインスタンスを生成するといいます )した後で、「 $sample->sampleFunc(); 」のように記述して関数を呼び出します(「 $sample 」は任意に命名した変数名です )。
     
     
    サーバを起動して、ブラウザから ソースファイルにアクセスしてみて下さい。
    ( サーバの起動方法等についてはサーバを起動をご参照下さい。)

    文字列定数「 オブジェクト定数1 」及び「 オブジェクト定数2 」の表示が確認できれば OK です。

    このように、オブジェクト定数は 参照場所によって記述方法が異なる点に注意が必要です。

    ▲目次へ戻る

SHARE

最新記事

無料相談する

INTERNOUS,inc. All rights reserved.