PHP入門 定数

最終更新日

変数はデータの入れ物ですが、スクリプトの実行途中でデータの書き換えを行うことができます。それに対して定数は、中身を更新できない入れ物(変数)を定数と言います。ここでは、PHPの定数の解説をしています。

定数の基本

const命令を使用して定数を宣言します。

構文

const 定数名 = 値

<?php
const TAX = 1.1;
$price = 1000;
$sum = $price * TAX;
print $sum;

定数のルール

  1. 名前の先頭に「$」を付けない
  2. 名前はPHPで意味を持つ予約語を使用しない
  3. すべて大文字で命名する
  4. 利用できる型は限定される※整数 (int)、小数(float)、文字列(string)、true/false(bool)、null、以上の値を含んだ配列

define関数

定数は(const以外にも)defineで定義してもかまいません。

define('TAX),1.1;

const/defineの相違点

No.項目constdefine
トップレベル以外での宣言×
クラス定数の宣言×
変数、関数の戻り値を設定×
実行速度

❶は、if/whileなどの制御命令、functionの配下では、constを利用できないということ

❸は、例えば以下のように、constでは変数の値や演算の結果に割り当てられないことを意味します。

const VALUE = $x;
const MAIN = dirname(__F__).'/text.php';

このような場合は、define関数を利用しなければなりません。

define('VALUE', $x);
define('MAIN', dirname(__FILE__).'/test.php');

定義済みの定数

PHPには、最初から用意された定数が用意されています。定義済みの定数は、const/defineで宣言することなく、無条件に利用できます。

定数概要
__FILE__実行中のファイル名(絶対パス)
__DIR__実行中のファイルが存在するフォルダー
__LINE__実行中の行番号
__FUNCTION__実行中の関数名
__CLASS__実行中のクラス名(所属する名前空間を含む)
__METHOD__実行中のメソッド名
__TRAIT__実行中のトレイト名(所属する名前空間を含む)
__NAMESPACE__現在の名前空間
DIRECTORY_SEPARATORフォルダーの区切り文字(Windows環境では、「\」、macOS環境では「/」)
PATH_SEPARATORパスの区切り文字(Windows環境では「:」、macOS環境では「:」)
PHP_VERSION使用しているPHPのバージョン

環境に依存する情報はハードコーディングせず、代わりにDIRECTORY_SEPARATORやPATH_SEPARATORなどの定数で記述しておくことで、サーバー環境を移動した場合にもコードを変更する必要がなくなります。