対象読者
定数とは
定数
「データを入れるための箱」、「名前を付けることができる」という点は、変数と役割は一緒。変数との大きな違いは、「再代入が不可能」であること。
定数を使う場合、使わない場合の比較
一度定数を定義すると、プログラム中で使い回せる。また、メンテナンス性が向上するのも便利な点だ。以下に、定数を使わない場合と使う場合のコードの比較を示す。実行結果は同じ。
定数を使わない場合
定数を使わない場合
<?php
print (100 * 1.1).'<br>';
print (200 * 1.1).'<br>';
print (300 * 1.1).'<br>';
/* 実行結果
110
220
330
*/
?>
- 1.1(消費税 10%)が、パッと見何の数値を表すのかがわからない(定数名が付いていない)
- もし消費税が変わった場合、1.1(消費税 10%)の所をすべて修正する必要がある(上の例では 3 箇所)
定数を使う場合
定数を使う場合
<?php
const SALES_TAX = 1.1; // 消費税率が変わっても修正はこの行のみ
print (100 * SALES_TAX).'<br>';
print (200 * SALES_TAX).'<br>';
print (300 * SALES_TAX).'<br>';
/* 実行結果
110
220
330
*/
?>
- 定数
SALES_TAX
(消費税 10%)を定義することで、数値の意味がわかりやすい - 消費税が変わっても修正は 1 箇所で済む(メンテナンスがラク)
定数の宣言
方法 1 const
const で定数を定義
<?php
const 定数名 = 値;
?>
方法 2 define 関数
define 関数で定数を定義
<?php
define('定数名', 値);
?>
定数の命名規則
- (
$
) は付けない - 予約語は避ける
- 通例、大文字で命名する
- 定数として定義できる型は限定される
複数の単語を使って定数名を付ける場合は、アンダースコア (_
) で区切る。
定数として定義できる型は、 スカラー(bool
、int
、float
、string
) と スカラーを含んだ配列 に限る。
自動的に定義される定数、マジック定数
PHP には、「自動的に定義される定数」、使われる場所によって値が変化する「マジック定数」がある。これらは、const
などで宣言することなく使用可。その主な定数を表に示す。
定数 | 説明 |
---|---|
__LINE__ |
実行中の行番号 |
__FILE__ |
実行中のファイル名 |
__DIR__ |
実行中のファイルが存在するディレクトリ名 |
PHP_VERSION |
PHP バージョン |
PHP_MAXPATHLEN |
ファイル名の長さ (パスを含む) の最大値 |
PHP_INT_MAX |
整数型の最大値 |
参考までに 佐藤 の開発環境(ローカル)での実行結果
article3.php
<?php
print '__LINE__:'.__LINE__.'<br>';
print '__FILE__:'.__FILE__.'<br>';
print '__DIR__:'.__DIR__.'<br>';
print 'PHP_VERSION:'.PHP_VERSION.'<br>';
print 'PHP_MAXPATHLEN:'.PHP_MAXPATHLEN.'<br>';
print 'PHP_INT_MAX:'.PHP_INT_MAX.'<br>';
/* 実行結果
__LINE__:2
__FILE__:C:\パス\article3.php
__DIR__:C:\パス
PHP_VERSION:8.X.X
PHP_MAXPATHLEN:2048
PHP_INT_MAX:9223372036854775807(64 ビットの場合)
*/
?>
参考サイト
「自動的に定義される定数」、「マジック定数」は、先に紹介した以外にも多数存在する。詳細は、以下のサイトを参照。