__get()
プライベート プロパティにアクセスするために、クラスでマジック メソッドを使用しようとしています。アクセスされない限り、プロパティには値が割り当てられず、その値は 0 からインデックス付けされた配列です。
class Foo {
private $bar;
public function __get($p) {
if ($p == 'bar') {
if ($this->bar) {
return $this->bar;
}
else {
return $this->bar = $this->get_bar();
}
}
}
private function get_bar() {
return Array('a', 'b', 'c'); // data from db
}
}
私の PHP コードでは、このクラスのオブジェクトをインスタンス化し、それを直接 Smarty (つまり$smarty->assign('obj', new Foo())
) に渡しています。$bar
テンプレート ファイル内のプロパティからインデックス 0 の値にアクセスしたいと考えています。私はこれを試しました:
{$obj->bar[0]}
しかし、これは私には何も返されません...これは、このマジックメソッドによって返されるデータによってサポートされていないものですか?