【PHP】クラス定数の文字列連結

phpのクラス定数で文字列連結ができるのは、PHPのバージョンが5.6.0以降になります。

phpのクラス定数の基本的な使い方

<?php
class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

echo MyClass::CONSTANT . "\n";

$class = new MyClass();
$class->showConstant();

php5.3.0以降で使用可能なクラス定数

変数を用いてクラスを参照することが可能になりました。
ヒアドキュメントや Nowdoc を用いた定数の初期化も使用できるようになりました。

<?php
class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

// 変数を用いてクラスを参照
$classname = "MyClass";
echo $classname::CONSTANT . "\n"; // PHP 5.3.0 以降で対応

// 変数を用いてクラスを参照
$class = new MyClass();
echo $class::CONSTANT."\n"; // PHP 5.3.0 以降で対応


class foo {
    // PHP 5.3.0 以降で対応(Nowdoc)
    const BAR = <<<'EOT'
bar
EOT;
    // PHP 5.3.0 以降で対応(ヒアドキュメント)
    const BAZ = <<<EOT
baz
EOT;
}

php5.6.0以降で使用可能なクラス定数

数値リテラルや文字列リテラルそして定数を含むスカラー式を指定できるようになりました。

const ONE = 1;

class foo {
    // PHP 5.6.0 以降
    const TWO = ONE * 2;
    const THREE = ONE + self::TWO;
    const SENTENCE = 'The value of THREE is '.self::THREE;
}