胡子模板的示例:
{{#entites}}
<a href="{{url}}">{{title}}</a>
{{/entities}}
呈现者:
$m = new Mustache_Engine(
['loader' => new Mustache_Loader_FilesystemLoader('../views')]
);
echo $m->render('index', $data);
基本嵌套数组。
$data = [
'entities' => [
[
'title' => 'title value',
'url' => 'url value',
]
]
];
这在模板中正确呈现。
类的对象数组:
class Entity
{
private $title;
private $url;
//setter & getters
public function __get($name)
{
return $this->$name;
}
}
胡子参数:
$data = [
'entities' => [
$instance1
]
];
在这种情况下不起作用-输出为空(属性中没有值)
答案 0 :(得分:1)
为什么不在类中使用这样的函数而不是魔术方法
public function toArray()
{
$vars = [];
foreach($this as $varName => $varValue) {
$vars[$varName] = $varValue;
}
return $vars;
}
然后调用该函数以将变量作为数组获取
$data = [
'entities' => $instance1->toArray()
];
答案 1 :(得分:0)
您可以使用ArrayAccess
界面来访问您的私有财产,如下所示:
class Foo implements ArrayAccess {
private $x = 'hello';
public $y = 'world';
public function offsetExists ($offset) {}
public function offsetGet ($offset) {
return $this->$offset;
}
public function offsetSet ($offset, $value) {}
public function offsetUnset ($offset) {}
}
$a = new Foo;
print_r($a); // Print: hello
这当然是一个简单的示例,您需要为其余的继承方法添加更多的业务逻辑。