PHP7 define()とconstの違い

PHP7 define()とconstの違い

PHP7には、定数を定義することができる構文が2つ存在します。

<?php
define('foo', 1);
const bar = 1;

defineよりもconstの方が関数を呼び出さないので高速に処理をすることができますが、その分制約がいくつかあります。

constではできないこと

constの右辺には、式や関数を書くことができません。

<?php
const foo = 1+2; // error
const bar = dirname(__DIR__, 2); // error

constでしかできないこと

constは、元々クラス専用のキーワードだったので、Class内ではconstでしか、定数を定義することができません。

<?php
class A
{
  const foo = 1;
}