※ パクレゼルヴではWeb開発エンジニアを大募集中!詳細はこちら
Home > PHP, Tips > 可変変数

可変変数  

2008/10/23 木曜日 17:28:26

お疲れ様です
のびーにょです。

今日は可変変数について。

可変変数って何?とか言ってる当社の社員はググれ
まず以下

$hoge = 'aaa';
$$hoge = 'bbb';
echo $aaa;

出力結果は

bbb

って出ますね。

つまりそういうこと。

変数に格納されている値を変数名として使えたりする

厳密に言うともっと色々あったりするんですけど、まぁそんな所
結構トリッキーな事する時によく使ったりします。

メジャーな使い方としては
HTMLの値の受け渡しとかで(POSTで来ているものとする)

$d = array('hoge','hoge2','hoge3','hoge4');
foreach($d as $val){
    $$val = $_POST[$val];
}

とかやると配列に入れている値がすべて変数に格納されたりして便利ですよね。
このあたりでヴァリデートしてやれば一か所で終わりますし。

あ、あとTips的にこんなことできますよ

$cName = 'Contents';
$insC = new $cName();

変数に文字列入れて、その文字列でインスタンスを生成することができます。
私が作ったフレームワークでも使ってたりするのですが、生成するクラスが違う時等に利用しています。

たとえば拡張クラスを作る場合は”ext”をつけたクラスを作成し、”ext”が付いているクラスがある場合はそちらでインスタンスを生成し、ない場合は”ext”が付いていないクラスでインスタンスを生成する、等という使い方をしています。

$ClassArray = array('aClass','bClass','cClass','dClass');
foreach($ClassArray as $class){
    if(class_exists('ext'.$class)){
        ${$class} = "ext".$class;
    }else{
        ${$class} = $class;
    }
}
$insA = new $aClass();
$insB = new $bClass();
$insC = new $cClass();
$insD = new $dClass();

ま、トリッキーになるんであまり多用しないことをお勧めします。

のびーにょ PHP, Tips

  1. No comments yet.
  1. No trackbacks yet.