PHPのオブジェクトキャスト

arrayオブジェクト化してもアクセス方法は同じだし、foreachに渡せる分そっちのほうが良いんじゃないだろうか。ああ。だけどオブジェクト化した配列foreachに渡すとか頭悪そうだね。

とか思っていたらネイティブに配列のオブジェクトキャストというものがあることを知る。へえ。

<?php
$arr = array('a'=>'Alice', 'b'=>'Bob');
$obj = (object)$arr;  // オブジェクトキャスト

echo $obj->a, "\n";  #=> Alice
$obj->a = 'Aslan';   // 問題ない
echo $obj->a, "\n";  #=> Aslan
$obj->c = function($str) { echo $str; };  // 問題ない
$c = $obj->c;  // 問題ない
$c('hoge');    #=> hoge
$obj->c('hoge'); // PHP Fatal error:  Call to undefined method stdClass::c()

あれ。まあ期待はしていたわけではないけど。