phpのdefineの使い方!定数を定義しよう


phpのdefineの使い方!定数を定義しよう
目次
  1. phpのdefineとは
  2. phpでdefineを使う場合
  3. defineの使い方
  4. 大文字と小文字の区別
  5. defineで定義した値は書き換えられません!
  6. 配列定数の定義
  7. const構文との違い

phpのdefineとは

define[dɪfάɪn] とはデファインとは読み、「定義する」「限定する」といった意味を持ちます。 PHPのdefine関数では定数を定義することができます。

定数あるいはデファインとは、一度宣言するとその後は値の更新ができない値のことをいいます。(逆に値を変えることができるものを変数と呼びます) プログラム中で書き換えられてしまうと困るような情報をdefine関数で宣言します。

phpでdefineを使う場合

defineの使い方

define(定数名, 値 [, 大文字と小文字の区別]);

定数名に利用できるのは変数と同じく英数字か_(アンダースコア)で、数字が使えるのは2文字目以降となります。 定数名は小文字を利用せず、大文字のみで定義するのが一般的です。

なお、defineで定義した定数はプログラムのどこからでも呼び出すことが可能です。

<?php
define('TAX', 1.08); // 消費税

$price = 100;

echo '税込' . $price * TAX . '円';
<実行結果>
税込108円

消費税はプログラム中で勝手に20%や30%に書き換えられると大変ですので、ここでは定数で宣言しています。 また、定数は変数と違って呼び出す際に$(ダラー)をつけない点に注意しましょう!

大文字と小文字の区別

define関数は定数名の大文字と小文字を明確に区別する関数となっています。

ですが、第三引数にtrueを設定すると大文字と小文字の区別がなくなり、大文字で宣言した場合でも小文字で呼び出すことが可能になります。

<?php
define('MOSHI', 'もし', true);

echo MOSHI . moshi;
<実行結果>
もしもし

また、第三引数にfalseを指定すると省略した場合と同じく大文字と小文字が区別されます。

defineで定義した値は書き換えられません!

<?php
define('TAX', 1.08); // 消費税
define('TAX', 1.10); // 消費税を変更

echo TAX;
<実行結果>
Notice: Constant TAX already defined
1.08

このように定数は変更しようとしても書き換わらず、さらに「もう定数宣言されてるよ」といった意味のエラー文がでます。

配列定数の定義

PHP7以降ではdefineで配列を定義することができます。配列の定数なので配列定数と呼ばれます。

<?php

define('ANIMAL', array(
  '猿',
  '鳥',
  '犬'
));

echo '桃太郎の最初の仲間は' . ANIMAL[0] . 'です';
<実行結果>
桃太郎の最初の仲間は鳥です

また、配列だけでなく連想配列も定義することができます。

<?php

define('ANIMAL', array(
  '猿' => '300円',
  '鳥' => '200円',
  '犬' => '500円'
));

Webサイト担当者としてのスキルが身に付く

無料カウンセリングはこちら

const構文との違い

同じく定数定義できるものにconst構文があります。

const TAX = 1.08;

define関数とconst構文との違いは、define関数がプログラム内のどこからでも呼び出せるグローバルな定数を宣言できるのに対し、const構文は宣言したクラス内でしか使えないローカルな定数となっています。

そのため、プログラム全体からアクセスする可能性がある定数については、define関数で定義するようにしましょう。逆にそのクラス内でしか使わないような定数は、const構文を用いたほうがいいでしょう。


CodeCampus編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp