PHP 文字列内で定数を展開する方法(無名関数/クロージャ)

PHPで文字列を出力する際、変数であればダブルクォートで囲った文字列内に中カッコで変数を囲えば展開出来ますが、同様の方法で定数を展開することが出来ません。

パラメータの内容をそのまま返す無名関数(クロージャ)を用意する

以下のようにパラメータの内容をそのまま返してくれる無名関数(クロージャ)を用意することで文字列内でも定数を展開させることが可能になります。

<?php

/* 定数を宣言する */
define("COMPANY_NAME", "アナライズギア株式会社");
define("STAFF_NAME", "深尾 拓生");

/* クロージャ */
$const = function($c){ return $c; };

/* 文字列内で定数を展開して表示する */
echo "【{$const(COMPANY_NAME)}】\n";
echo "{$const(STAFF_NAME)} 様 お問い合わせ有難うございます。\n";
echo "\n";

上記のコードを実行すると以下のように文字列内に定数を展開した状態で出力することが出来ます。

【アナライズギア株式会社】
深尾 拓生 様 お問い合わせ有難うございます。

動作環境情報

エックスサーバー(x10)
PHP 7.3.16

コメント

タイトルとURLをコピーしました