Objectに動的にプロパティを追加する

object 生成後に、宣言とか関数とか使わずにプロパティを追加できるらしい。


by PHP 5.2.6 (Mac OSX)

<?php
class Test {
  public $a = 'default';
}
$test = new Test();
$test->foo = 'bar'; // add property

print_r(get_class_vars('Test'));
print_r(get_object_vars($test));
// 実行結果
Array
(
    [a] => default
)
Array
(
    [a] => default
    [foo] => bar
)


うかつに使うと後から追うのが難しいなーなんて思ってたら、こんなこともできた

<?php
class Test {
  public $a = 'default';
}
$test = new Test();
$hoge = 'hage';
$test->$hoge = 'moga'; // add property
 
print_r(get_class_vars('Test'));
print_r(get_object_vars($test));
// 実行結果
Array
(
    [a] => default
)
Array
(
    [a] => default
    [hage] => moga
)

変数内の文字列の名前を持ったプロパティが追加されている。
ORマッパーを作るなどする時は便利そうだ、が・・・

こんなにさりげないと、あっという間にミートソースをぶっかけたくなりそうで困る。

こんなネタも

PHP 5.4 RC1リリース、新機能の「行番号」や「LIST」「RUN」に注目 : bogusnews
現実はネタよりも奇なり、になる・・・かも。