2010年01月24日

php:${ }って結構便利よ

うっかりプログラミング日誌さん
ReflectionClassでメソッドを動的に呼ぶ&ベンチマーク
http://d.hatena.ne.jp/gom68/20090926/1253939933

あまり、記事内容に沿うリンクじゃありませんが、ReflectionClass を調査していてふと・・・。



$i = 0;
$o = new stdClass();
$o->$i = 'number';

echo $o->0; // !) Parse error

これは Parse error になりますが、以下なら。

$i = 0;
$o = new stdClass();
$o->$i = 'number';

echo $o->{0}; // number

他にもこんな事も

$obj = new myclass;
class myclass{
  function mymethod ($msg){echo $msg;}
}
function fn1(){return 'obj';}
function fn2(){return 'method';}


${fn1()}->{'my' . fn2()}('Hello!'); // Hello!

$ や -> に続く { } には、色々と突っ込めたりする。

class myclass{
  private $buffer = '';
  function __construct($v){
    return $this->name($v);
  }
  function name($v = false){
    static $n;
    if($v) $n = $v;
    return $n;
  }
  function push($msg){
    $this->buffer .= "$msg ";
    return $this->name();
  }
  function flush(){
    echo $this->buffer;
    $this->buffer = '';
    return $this->name();
  }
}

$o = new myclass('o');
${${$o->push('Hello')}->push('world !')}->flush();
// Hello world !

読み手を混乱させるためだけのトチ狂った^^;ことも
変数名要求するなんて・・・、抽象化なんて知った事か!ってなコードです(w)

posted by HiFa at 15:29 | 🌁 | Comment(0) | TrackBack(0) | ときどきPHP | このブログの読者になる | 更新情報をチェックする
>>> スパムコメントは消してますよん。 お互い無駄な労力は避けましょう。 <<<

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。