次のような変数を表示しようとしているときにエラーを受け取りました。
echo "id is $url->model->id";
問題は、echo がこのように表示される単純な変数 ($id や $obj->id など) のみを好むことです。
class url {
public function __construct($url_path) {
$this->model = new url_model($url_path);
}
}
class url_model {
public function __construct($url_path) {
$this->id = 1;
}
}
その後
$url = new url();
echo "id is $url->model->id"; // does not work
$t = $url->model->id;
echo "id is $t"; //works
$t = $url->model;
echo "id is $t->id"; //works
echo "id is {$url->model->id}"; //works. This is the same syntax used to display array elements in php manual.
//php manual example for arrays
echo "this is {$baz['value']}";
なぜ機能するのかわかりません。構文を推測しただけです。
echo "..."
PHPマニュアルでは、オブジェクトの使用方法については述べていません。また、いくつかの奇妙な動作があります。単純な変数でエコーし、動作します。オブジェクトの単純なプロパティでエコーが機能します。別のオブジェクト内にあるオブジェクトの単純なプロパティでのエコーは機能しません。
これecho "id is {$url->model->id}";
は正しい方法ですか?もっと簡単な方法はありますか?