表記の件につきまして質問いたします。
php
1class Sample 2{ 3 public function __call($name, $args) 4 { 5 if ($name == 'hello') { 6 return 'Hello '.$args."\n"; 7 } 8 } 9 10 public function getItem() 11 { 12 $attr = [ 13 'a' => 123, 14 'b' => 456, 15 'c' => 789, 16 ]; 17 18 return (Object)$attr; 19 } 20 21} 22$sample = new Sample(); 23$obj = $sample->getItem(); 24 25$obj->hello('Mike');
「Hello Mike」の出力する方法を調べています。
上記のソースだと「__call」は「$obj」ではなく「$sample」が対象となっているのは理解していますが、
動的に生成した「$attr」を対象とする方法が見つかりません。
何卒、ご教授の程、お願いします。
無理、な気がします。Sampleクラスから離れた単なるオブジェクトなわけですし。
この「動的に生成したオブジェクト」を利用したい背景とか経緯、大目的部分を具体的に記載いただけますか?
コメントありがとうございます。
本件の目的・経緯につきましては諸事情により記載は控えさせて頂きます。
> 動的に生成した「$attr」を対象とする方法
ここのところが理解ができません。たぶんstdClassに__callをもたせる、っていう方向性はなかなか厳しいものがある(言語仕様的に絶対無理かどうか分かりません)と思うのですが、$attrを対象にhelloを呼ぶというのをもうちょっと噛み砕いていただけませんか?
もしくは、getItemをするときに、Sampleクラス(か何か自作の別クラス)を返すようにしてはダメなのでしょうか?この辺の制限も追記していただけないでしょうか?
なるほど。では具体的な回答も控えさせていただきます。
それだけ要件不明瞭ということになります。(「できません」って回答ならできますが)