エコー時に文字列を出力するオブジェクトを呼び出し元に返すだけでなく、アクセスできるプロパティも持っています。あらかじめ定義されたクラスやたくさんのコードがなくても、これをどうすれば実現できますか?クラスを使用することにより作業クラスを使用せずに__toString機能を持つオブジェクトを返す
$obj = func(); // an object should be returned, where:
echo $obj->prop; // 1) the object has properties
echo $obj; // 2) echoing the object itself should echo a specific string
:おそらく失敗
<?
class obj {
var $head;
var $body;
function __construct($head, $body) {
$this->head = $head;
$this->body = $body;
}
function __toString() {
return $this->body;
}
}
function blah() {
return new obj("My head", "My body");
}
$response = blah();
echo "$response->head and $response\n";
?>
擬似試み:
<?
function blah() {
$head = "My head";
$body = "My body";
return (object) array(
"head" => $head,
"body" => $body,
"__toString" => function() {
return $body;
},
);
}
$response = blah();
echo "$response->head and $response\n";
?>
PHP7以降、[anonymouse classes](http://php.net/manual/en/language.oop5.anonymous.php)を使用することができます。しかし、なぜオブジェクトが必要なのかわかりませんが? 'echo $ response ['head']'というキーで配列を返してエコーすることができます。あなたがオブジェクト上で死んでいる場合は、 '$ clのような標準クラスまたは[typecasting](http://php.net/manual/en/language.types.object.php#language.types.object.casting)を使用してください=新しい\ stdclass(); $ cl-> head = $ head; '次に、結果をエコー$ echo-> headでエコーします。 'と'。 $ res-> body; 'はオプションになります。 –
私は 'echo $ response'だけを行い、専用プロパティ(この場合は' body')を得ることができるオブジェクト( '$ response')を返すことができるようにしたいと同時に' echo $ response - >プロパティを使用して任意のプロパティを取得します。クラスなしでこれを行うことはできますか?あるいは、別の言い方をすれば、これを行う最短の方法は何ですか? – forthrin