PHPの定数定義 const と define() の違い【PHP入門】

PHPでの定数の定義方法にはconstを使ったやり方と、define()を使ったやり方があります。
constは命令文であり、define()は関数です。
本記事では、それぞれどのような違いがあるのか確認していきます。

目次

const と define() の違い

クラス定数での宣言

constの場合・・・OK

constは、クラス定数での宣言が可能です。

<?php
class Test001
{
    const TAX_RATE = 1.1;
}
-------------------------------------------
PS C:\xampp\htdocs\test> php Test001.php
PS C:\xampp\htdocs\test> 

define()の場合・・・NG

define()はクラス定数での宣言が行えません。

<?php
class Test001
{
    define('TAX_RATE', 1.1); // ★NG
}
-------------------------------------------
PS C:\xampp\htdocs\test> php Test001.php
Parse error: syntax error, unexpected identifier "define", expecting "function" or "const" in C:\xampp\htdocs\test\Test001.php on line 4

トップレベル以外での宣言

constの場合・・・NG

constは、トップレベル以外での宣言は行えません。

<?php
if (1==1) {
    const TAX_RATE = 1.1; // ★NG
}
---------------------------------
PS C:\xampp\htdocs\test> php Test001.php
Parse error: syntax error, unexpected token "const" in C:\xampp\htdocs\test\Test001.php on line 3

define()の場合・・・OK

define()は、トップレベル以外での宣言が行えます。

<?php
if (1==1) {
    define('TAX_RATE', 1.1);
}
---------------------------------
PS C:\xampp\htdocs\test> php Test001.php
PS C:\xampp\htdocs\test>

変数や関数の戻り値の利用

constの場合・・・NG

constは、設定値に変数の利用ができない。

<?php
$greeting = 'Hello World!';
const GREETING = $greeting; // ★NG
echo GREETING;
---------------------------------
PS C:\xampp\htdocs\test> php Test001.php
PHP Fatal error:  Constant expression contains invalid operations in C:\xampp\htdocs\test\Test001.php on line 3

constは、設定値に関数の戻り値の利用ができない。

<?php
const NAME = mb_substr('Hello World!', 6); // ★NG
echo NAME;
---------------------------------
PS C:\xampp\htdocs\test> php Test001.php
PHP Fatal error:  Constant expression contains invalid operations in C:\xampp\htdocs\test\Test001.php on line 2

define()の場合・・・OK

define()は、設定値に変数の利用が可能。

<?php
$greeting = 'Hello World!';
define('GREETING', $greeting);
echo GREETING;
---------------------------------
PS C:\xampp\htdocs\test> php Test001.php
Hello World!

define()は、設定値に関数の戻り値の利用が可能。

<?php
define('NAME', mb_substr('Hello World!', 6));
echo NAME;
---------------------------------
PS C:\xampp\htdocs\test> php Test001.php
World!

まとめ

まとめると以下の通り。
基本的にはconstを使用して、どうしてもconstが使えない場合のみdefine()を使用する。

constdefine()
クラス定数での宣言×
トップレベル以外での宣言×
変数や関数の戻り値の利用×
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

文系の大学を卒業後、未経験でWebエンジニアとしての道を歩む。
プログラミングスクールで基礎を学び、Webエンジニアとして就職。
今ではプロジェクト経験15年以上のベテランエンジニアに。
 
今までの経験を活かし、プログラミング関連の情報や生活に役立つ情報を配信していきます。

コメント

コメントする

目次