例えば 消費税の税率など、プログラム内で変える必要のないデータを扱う場合には、変数ではなく定数を使用します。
PHP では、関数 define を使って定数を定義する方法の他に、キーワード const を使って定数を定義する方法があります。
今回は、PHP のキーワード const で定数を定義する方法について紹介したいと思います。
( 関数 define を使って定数を定義する方法については、PHP【 define 】グローバル定数の定義をご参照下さい。)
本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方
なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。
最終更新日:2019年2月3日
目次
定数も 変数と同様にデータを入れる入れ物のようなものですが、変数と違って一度入れたデータの値を変更することができません。
例えば、会計システムで、消費税率を定数で定義しておくと、商品価格に定数をかけて税込み金額を算出することができます。
このように、プログラム内で変える必要のないデータを定数として定義します。
キーワード const を使って定数を定義する場合は、次のように記述します。
const 定数名 = 値;
定数も 変数と同様に 数値や文字列、ブール型データ(true と false)など、様々な型のデータを定義して使用します。
PHP では、キーワード const を使って定数を次のように定義します。
const VAT = 1.1;
上記は、数値データ「 1.1 」を定数「 VAT 」として定義しています。
const を使用する場合、定数名として使用可能な文字は半角英数字とアンダースコア( _ )のみで、英字の大文字と小文字は区別して認識されます。
一般的に、定数名は大文字の英数字とアンダースコア( _ )で命名します。
変数と定数を区別するためにも、この慣例に従うのが望ましいです。
関数 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::オブジェクト定数名 」と記述して定数の値を参照します。
オブジェクト定数を、定義場所の外側で参照する場合は「 定義場所のクラス名::オブジェクト定数名 」と記述して定数の値を参照します( 定義場所がインターフェイス内の場合は「 定義場所のインターフェイス名::オブジェクト定数名 」)。
const と define の大きな違いは、define が関数である点です。
関数である define より、関数ではない const の方が早く処理されます。
一方で、define は関数であるため、定数の値として 例えば戻り値のある関数を格納することもできます。
このような違いを意識して、define を使う特段の理由がなければ 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 です。
このように、オブジェクト定数は 参照場所によって記述方法が異なる点に注意が必要です。
INTERNOUS,inc. All rights reserved.