カテゴリ: PHP 更新日: 2026/04/11

PHP の定数(define, const)を使った設定方法を徹底解説!

PHP の定数(define, const)を使った設定方法
PHP の定数(define, const)を使った設定方法

新人と先輩の会話形式で理解しよう

新人

「PHP の定数って何ですか?変数とどう違うんですか?」

先輩

「定数は、一度値を設定すると変更できない特別な変数みたいなものだよ。例えば、消費税率やアプリの設定値など、途中で変わらない値に使われることが多いんだ。」

新人

「なるほど!変数みたいに途中で変更できないんですね。どうやって作るんですか?」

先輩

「PHP では define()const という2つの方法で定数を定義できるよ。それじゃあ、詳しく見ていこう!」

1. PHP の定数とは?(基本的な説明)

1. PHP の定数とは?(基本的な説明)
1. PHP の定数とは?(基本的な説明)

PHP における定数は、名前のとおり一度決めた値を変えずに使い続けたいときに利用する仕組みです。変数のように後から値を書き換えることはできず、スクリプト全体を通して安定した状態で扱えるのが特徴です。

たとえば、消費税率やサービス名、アプリのバージョン番号といった「途中で変わってほしくない情報」は、定数として定義しておくと扱いやすくなります。プロジェクトが大きくなるほど、こうした固定値をひと目で識別できることがコードの理解につながり、修正漏れの防止にも役立ちます。

定数を使うメリットは次のとおりです。

  • 値が勝手に書き換わる心配がない:アプリの重要な設定値を安全に管理できる
  • コードの見通しがよくなる:意味を持った名前を付けることで、役割がすぐに理解できる
  • 設定ファイルや環境に応じた値を一元管理できる:後から値を探しに行く手間が減り、管理が楽になる

このように、定数はアプリ全体の「決まりごと」を整理するうえで欠かせない存在です。まずは基本的な使い方から順番に理解していきましょう。

2. 定数と変数の違い

2. 定数と変数の違い
2. 定数と変数の違い

ここでは、よく一緒に登場する「変数」と「定数」の違いを整理しておきます。同じように値を入れて使える仕組みですが、途中で値を変えられるかどうかという点が大きな違いです。まずはざっくり全体像を表で確認し、そのあとでシンプルなサンプルコードも見てみましょう。

項目 変数(Variable) 定数(Constant)
値の変更 可能($変数名 = 値; 不可(define()const を使用)
書き方 $変数名 で定義 define() または const を使用
スコープ 関数内で宣言すればローカル、それ以外はグローバル 基本的にグローバル

変数は「あとから値を入れ替えられる箱」、定数は「中身を変えないラベル付きの値」のようなイメージです。一度設定した定数は変更できないため、うっかり別の値を代入してしまうことを防げます。その結果、プログラムの挙動が安定し、バグの原因を減らせるというメリットがあります。

変数と定数を並べて見てみる簡単なサンプル

イメージしやすいように、変数と定数を同じファイルの中で使ってみます。ここでは、税込価格を計算するというシンプルな例で違いを確認してみましょう。


<?php
// 変数:あとから値を変えられる
$tax = 10;        // 税率10%
$price = 1000;
$priceWithTax = $price * (1 + $tax / 100);
echo "変数を使った税込価格: " . $priceWithTax . "円<br>";

$tax = 8;         // 税率を8%に変更
$priceWithTax = $price * (1 + $tax / 100);
echo "税率を変更したあとの税込価格: " . $priceWithTax . "円<br>";

// 定数:途中で値を変えられない
const TAX_RATE = 10;
$priceWithConst = $price * (1 + TAX_RATE / 100);
echo "定数を使った税込価格: " . $priceWithConst . "円";
?>

このサンプルでは、$tax は何度でも値を入れ替えられるため、「途中で税率を変える」という使い方ができます。一方で、TAX_RATE は定数として宣言しているため、同じスクリプト内で別の値を代入することはできません。もしうっかり書き換えようとすると、PHP がエラーとして教えてくれます。

プログラミングに慣れていないうちは、「変えたい値は変数」「変えたくない設定値は定数」とざっくり使い分けるだけでも十分です。次のセクションでは、実際に定数を定義するための具体的な書き方(define()const)を見ていきます。

3. 定数の基本的な使い方(define, const)

3. 定数の基本的な使い方(define, const)
3. 定数の基本的な使い方(define, const)

PHP では、定数を定義する方法として define()const の2種類が用意されています。それぞれ書き方や使える場面が少し異なるため、特徴を理解して使い分けることが大切です。

1. define() を使う方法

define() は、もっとも基本的な定数の作成方法です。定数名を 文字列 として指定する点が特徴で、関数の内部でも定義できます。


<?php
define("サイト名", "PHP学習サイト");
echo サイト名;
?>

PHP学習サイト

定数名を動的に決めたい場合や、関数の中で定数を扱いたい場合は define() を選ぶと柔軟に使えます。

2. const を使う方法

const は、クラス内の定数宣言でもよく使われる書き方です。スクリプトの読み込み時点で定義されるため、より静的で明確な定数を表現できます。


<?php
const バージョン = "1.0.0";
echo バージョン;
?>

1.0.0

ただし const は処理の途中で定義することができず、関数内で使用できない点に注意が必要です。

define() と const の違い

項目 define() const
スコープ グローバルのみ グローバル・クラス内
関数の中で定義 可能 不可
定義方法 define("名前", 値); const 名前 = 値;

一般的には、明確な値を扱うときは const、条件によって値を切り替えたい場合や実行時に定数を定義したいときは define() を使うのがおすすめです。

4. define を使った定数の設定方法と注意点

4. define を使った定数の設定方法と注意点
4. define を使った定数の設定方法と注意点

PHP で定数を定義するときに、まずよく登場するのが define() 関数です。define() を使うと、「この名前にはこの値」というルールをひとつ決めておき、その後はどこからでも同じ名前で参照できるようになります。変数と違って、いったん決めた値は書き換えられないので、アプリ名やバージョン番号などの設定情報を扱うときにとても便利です。

また define() は、条件分岐の結果に応じて定数の値を変えたいときや、設定ファイルから読み込んだ値をそのまま定数として扱いたいときなど、PHP の実行中に柔軟に定数を作りたい場面でもよく使われます。

define() を使った基本的な定義

まずは、シンプルな例で define() の書き方と、定数を表示する流れを確認してみましょう。ここでは、アプリケーション名とバージョン番号を定数として定義しています。


<?php
define("APP_NAME", "PHPアプリ");
define("VERSION", "1.0.0");

echo "アプリ名: " . APP_NAME . "<br>";
echo "バージョン: " . VERSION;
?>

アプリ名: PHPアプリ
バージョン: 1.0.0

define() は、最初の引数に「定数名」、2つ目の引数に「値」を渡します。定数名は 必ず文字列で指定する必要があり、一般的には APP_NAMEDB_HOST のように大文字とアンダースコアで書くことが多いです。定義したあとは、変数のように $ は付けず、APP_NAME のようにそのまま書いて参照します。

一度 define() で値を設定した定数は、あとから別の値を代入したり、再定義したりすることはできません。PHP の定数は「上書きできない設定値」として振る舞うため、重要な PHP の設定やアプリの環境情報を安全に扱うことができます。

define() の注意点

便利な define() ですが、使うときにはいくつか知っておきたいポイントがあります。特に、PHP の定数をたくさん使うようになると、ここで挙げる注意点を意識しておくことでトラブルを減らせます。

  • 定数名は 文字列 で指定する必要がある(例: define("定数名", 値);
  • 関数の内部でも定義できる(動的な定数が作れる)
  • 後から変更できないため、定義時に注意が必要

とくに最後の「後から変更できない」という性質は、PHP の定数を設計するときに重要です。あとで値を変える可能性があるなら変数で管理し、アプリ全体で固定したい値だけを define() で定義する、といった使い分けを意識するとよいでしょう。

関数内での define() の使用例

define() の特徴として、関数の内部からでも定数を定義できるという点があります。次のサンプルでは、関数の中でデータベースのホスト名を定数として定義し、その後でその定数を参照しています。


<?php
function 設定定義() {
    define("DB_HOST", "localhost");
}

設定定義();
echo DB_HOST;
?>

localhost

このコードでは、設定定義() 関数の中で DB_HOST 定数を定義しています。ただし、関数を実行するまでは定数が存在しない 点に注意が必要です。もし 設定定義() を呼び出す前に DB_HOST を使おうとすると、未定義の定数として扱われてしまいます。

そのため、「必ずどの処理よりも先に読んでおきたい設定値」は、ファイルの先頭付近や専用の設定ファイルで define() を実行しておくのがおすすめです。PHP で定数を使った設定を行うときは、どのタイミングで define() が呼ばれるかを意識しながらコードを書くようにしましょう。

5. const を使った定数の設定方法と違い

5. const を使った定数の設定方法と違い
5. const を使った定数の設定方法と違い

PHP では、定数を定義する方法として const も利用できます。const はスクリプトの実行時に事前に定義されるため、関数内では使用できません。

const を使った基本的な定義


<?php
const サイト名 = "PHP学習サイト";
const バージョン = "1.0.0";

echo サイト名 . "(バージョン: " . バージョン . ")";
?>

PHP学習サイト(バージョン: 1.0.0)

const の注意点

  • 定数名に 文字列を使わずに 直接記述する(例: const 定数名 = 値;
  • 関数の内部では使えない
  • クラスの中で使用できる(クラス定数として利用可能)

関数の中で const を使うとエラー


<?php
function test() {
    const ERROR_MESSAGE = "エラー発生"; // 関数内ではエラー
}
?>

Parse error: syntax error, unexpected 'const'

このように、const は関数内で定義できないため、スクリプトのトップレベルやクラス内で使用する 必要があります。

クラスの中での const の使用例


<?php
class Config {
    const DB_HOST = "localhost";
    const DB_USER = "root";
}

echo Config::DB_HOST;
?>

localhost

このように、const はクラスの中で定数を定義する場合に適しています。

6. 定数の使いどころ(設定ファイルや環境変数)

6. 定数の使いどころ(設定ファイルや環境変数)
6. 定数の使いどころ(設定ファイルや環境変数)

定数は、設定情報や環境変数を管理するのに便利です。特に、設定ファイル にまとめて記述することで、コードの管理がしやすくなります。

設定ファイル(config.php)を使った例

設定ファイルを作成し、定数を定義しておくと、どこからでも利用できるようになります。


<?php
// config.php
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASS", "password");
?>

そして、メインのスクリプトで config.php を読み込んで利用します。


<?php
include "config.php";

echo "データベースホスト: " . DB_HOST;
?>

データベースホスト: localhost

環境変数としての活用

サーバー環境ごとに異なる設定を管理する場合、環境変数を定数として利用することもあります。


<?php
define("ENV", getenv("APP_ENV"));

if (ENV === "production") {
    define("DEBUG_MODE", false);
} else {
    define("DEBUG_MODE", true);
}

echo "デバッグモード: " . (DEBUG_MODE ? "ON" : "OFF");
?>

デバッグモード: ON

このように、getenv() を使って環境変数を取得し、定数として扱うことで、環境に応じた設定を柔軟に管理できます。

まとめ

PHP の定数は、アプリケーションの設定値や環境変数を管理するのに便利です。特に、define() は動的に定義できる点が特徴で、const はクラス内で使用できるため、適切に使い分けましょう。

7. 定数のスコープ(グローバル定数とクラス定数)

7. 定数のスコープ(グローバル定数とクラス定数)
7. 定数のスコープ(グローバル定数とクラス定数)

PHP では、定数のスコープ(適用範囲)を理解することが重要です。定数には、グローバル定数とクラス定数の2種類があります。

グローバル定数

グローバル定数は、define() または const を使って定義され、スクリプトのどこからでもアクセスできます。


<?php
define("APP_VERSION", "1.0.0");
echo "アプリのバージョン: " . APP_VERSION;
?>

アプリのバージョン: 1.0.0

グローバル定数は、関数やクラスの外側で定義され、スクリプト全体で利用できます。

クラス定数

クラス定数は、const を使ってクラスの中で定義します。クラス定数は、オブジェクトを作成しなくても直接アクセスできます。


<?php
class AppConfig {
    const VERSION = "2.0.0";
}

echo "クラスのバージョン: " . AppConfig::VERSION;
?>

クラスのバージョン: 2.0.0

クラス定数は、クラスの内部で定義され、クラス名::定数名 の形式でアクセスできます。

8. 定数を使う際のベストプラクティス(命名規則や使い分け)

8. 定数を使う際のベストプラクティス(命名規則や使い分け)
8. 定数を使う際のベストプラクティス(命名規則や使い分け)

定数を使う際には、いくつかのベストプラクティスを意識することで、コードの可読性と保守性を向上させることができます。

1. 命名規則

定数名は、以下のルールに従うのが一般的です。

  • すべて大文字(例:APP_NAME
  • 単語の区切りはアンダースコア(_)(例:DB_HOST
  • わかりやすい名前を付ける(例:MAX_USERS など)

2. 定数の使い分け

PHP では、用途に応じて define()const を使い分けることが重要です。

用途 推奨される定義方法
シンプルな定数 const
動的に定義する定数 define()
クラスの中で使用する定数 const
設定ファイルの定義 define()

基本的に、定数をシンプルに定義する場合は const を、設定ファイルや動的な定数を定義する場合は define() を使うとよいでしょう。

9. 定数を活用した実践的なサンプルコード(アプリ設定や環境変数の利用)

9. 定数を活用した実践的なサンプルコード(アプリ設定や環境変数の利用)
9. 定数を活用した実践的なサンプルコード(アプリ設定や環境変数の利用)

定数を活用することで、アプリの設定や環境変数を統一的に管理できます。

1. 設定ファイルを使った例

アプリの設定を config.php にまとめておくと、管理がしやすくなります。


<?php
// config.php
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASS", "password");
define("APP_ENV", "development");
?>

そして、メインのスクリプトで設定ファイルを読み込んで利用します。


<?php
include "config.php";

echo "データベースホスト: " . DB_HOST;
?>

データベースホスト: localhost

2. 環境変数を使った例

環境ごとに設定を変更したい場合、環境変数を定数として利用することができます。


<?php
define("ENV", getenv("APP_ENV"));

if (ENV === "production") {
    define("DEBUG_MODE", false);
} else {
    define("DEBUG_MODE", true);
}

echo "デバッグモード: " . (DEBUG_MODE ? "ON" : "OFF");
?>

デバッグモード: ON

このように、getenv() を使って環境変数を取得し、定数として扱うことで、環境に応じた設定を柔軟に管理できます。

3. クラスを使った設定の管理

定数をクラスの中で使うことで、設定をより整理することができます。


<?php
class Config {
    const DB_HOST = "localhost";
    const DB_USER = "root";
    const DB_PASS = "password";

    public static function getDbConfig() {
        return [
            "host" => self::DB_HOST,
            "user" => self::DB_USER,
            "pass" => self::DB_PASS
        ];
    }
}

$dbConfig = Config::getDbConfig();
echo "データベースホスト: " . $dbConfig["host"];
?>

データベースホスト: localhost

このように、クラスを使って定数をまとめることで、アプリケーションの設定を整理しやすくなります。

まとめ

まとめ
まとめ

PHP の定数は、アプリケーション全体の“土台”となる設定を安定して扱うための、とても頼りになる仕組みです。特に、プロジェクトが大きくなるにつれて「この値はどこで管理しているんだろう?」という場面が増えてきますが、定数を上手く使えていると、そうした迷いがぐっと減ります。

この記事では define()const の基本から、その違い、設定ファイル・環境変数との組み合わせまで幅広く取り上げてきました。実際の開発では、固定された設定値を const で整理したり、環境に応じて動的に切り替えたい設定は define() で扱ったりと、状況に応じた使い分けが求められます。

また、命名規則(全て大文字+アンダースコア)を統一するだけでも、コードの読みやすさは大きく変わります。こうした細かい部分を積み重ねることで、保守しやすく、変更にも強い PHP アプリケーションを作れるようになります。

実用例:環境ごとの切り替えを管理する定数の使い方


define("ENV", getenv("APP_ENV") ?: "development");

if (ENV === "production") {
    define("DB_HOST", "db.prod.example.com");
    define("DEBUG_MODE", false);
} else {
    define("DB_HOST", "localhost");
    define("DEBUG_MODE", true);
}

echo "現在の環境: " . ENV . "<br>";
echo "データベース: " . DB_HOST . "<br>";
echo "デバッグモード: " . (DEBUG_MODE ? "ON" : "OFF");

現在の環境: development
データベース: localhost
デバッグモード: ON

このように、環境変数と定数を組み合わせることで、開発環境と本番環境で設定を安全に切り替えることができます。設定が複雑になっても全体像を見失いにくくなるため、PHP で安定運用を目指すなら必ず押さえておきたいポイントです。

先生と生徒の振り返り会話

新人

「今回、PHP の定数について学んでみて、仕組みがはっきり分かってきました。特に define()const の役割の違いが印象に残りました。」

先輩

「そうだね。実行時に値を決めたいなら define()、最初から変わらない設定なら const、この使い分けが分かれば一歩前進だよ。」

新人

「クラスの中では const、関数の中では define() を使う理由もよく理解できました。エラーで悩んでいた部分がスッキリしました!」

先輩

「それと、定数名の書き方も大事だよ。大文字とアンダースコアで統一しておくと、設定値がどこにあるか一目で分かるからね。」

新人

「はい!これからは環境ごとの設定も含めて、定数を活用しながら整理していきます!」

先輩

「その調子。定数を上手く扱えるようになると、PHP のコードは本当に扱いやすくなるよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPの定数と変数の違いがよくわかりません。どんな場面で使い分けるのですか?

PHPでは、変数は値をあとから変更できるのに対して、定数は一度設定したら変更できません。消費税率や設定ファイルの値など、固定の値を扱いたいときに定数を使います。

PHPで定数を定義するには、defineとconstのどちらを使えばよいですか?

基本的に、動的な定義が必要な場合はdefine、静的でシンプルな定数ならconstを使います。クラス内ではconstが便利です。

PHPのdefine関数は、関数の中でも使えますか?

はい、PHPのdefine関数は関数の内部でも定数を定義できます。関数を実行するまでは定数が定義されない点に注意しましょう。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
New2
PHP
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
New3
PHP
PHPのメール送信でSPF・DKIM認証設定を完全解説!初心者でもわかるメール認証の基本
New4
Python
PythonでAPIのパフォーマンスを向上させる方法!キャッシュ活用を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.5
Java&Spring記事人気No5
PHP
PHPのHTMLメールの作成方法を完全ガイド!初心者でもわかるメール送信の基本
No.6
Java&Spring記事人気No6
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.7
Java&Spring記事人気No7
Python
Pythonの例外を発生させる方法を完全解説!raise文の使い方を初心者向けにやさしく説明
No.8
Java&Spring記事人気No8
Python
Pythonで2次元リストを作成・操作する方法(リストのリスト)