PHPで定数をメンバ変数の名前に使いたかった

PHPで定数をメンバ変数の名前に使いたかった。

stdClassでメンバ変数の名前に対して定義済み定数を利用しようとしたら怒られた。

<?php

define('HOGECONST', 'ehehe');
$hoge = new stdClass();
$hoge->hoge = 'value';
//$hoge->constant('HOGECONST') = ‘'value';  // raises an error -- Can't use method return value in write context
//$hoge->$constant(HOGECONST) = ‘'value'; // raises an error -- Can't use method return value in write context
//$hoge->HOGECONST = ‘'value'; // raises an error -- syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
$attr = constant('HOGECONST');
$hoge->$attr = 'value';
var_dump($hoge);

?>

object(stdClass)#1 (2) {
["hoge"]=>
string(5) "value"
["ehehe"]=>
string(5) "value"
}


どうやら一度定数を変数に格納した後、 $hoge->$attr というふうにアクセスしないとダメらしい。

「PHPで定数をメンバ変数の名前に使いたかった」への2件のフィードバック

コメントを残す