PHP入門 定数
変数はデータの入れ物ですが、スクリプトの実行途中でデータの書き換えを行うことができます。それに対して定数は、中身を更新できない入れ物(変数)を定数と言います。ここでは、PHPの定数の解説をしています。
定数の基本
const命令を使用して定数を宣言します。
構文
const 定数名 = 値
例
<?php
const TAX = 1.1;
$price = 1000;
$sum = $price * TAX;
print $sum;
定数のルール
- 名前の先頭に「$」を付けない
- 名前はPHPで意味を持つ予約語を使用しない
- すべて大文字で命名する
- 利用できる型は限定される※整数 (int)、小数(float)、文字列(string)、true/false(bool)、null、以上の値を含んだ配列
define関数
定数は(const以外にも)defineで定義してもかまいません。
define('TAX),1.1;
const/defineの相違点
No. | 項目 | const | define |
---|---|---|---|
❶ | トップレベル以外での宣言 | × | 〇 |
❷ | クラス定数の宣言 | 〇 | × |
❸ | 変数、関数の戻り値を設定 | × | 〇 |
❹ | 実行速度 | 〇 | △ |
❶は、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などの定数で記述しておくことで、サーバー環境を移動した場合にもコードを変更する必要がなくなります。