我正在创建一个容器类型,它可以包含许多可能的变体:
其中,只需要内容区域。有些子类型可以共享常用的条形图集,但它们也可以按任意组合进行混合和匹配。而且,每个条型可以在左侧或右侧具有内容。
我一直在创建一个具有以下属性的Panel类:
然后做这种逻辑:
// snip from __toString()
if ($this->info_left || $this->info_right) {
$result .= $this->add_bar('info', $this->info_left, $this->info_right);
}
if ($this->search_left || $this->search_right) {
$result .= $this->add_bar('search', $this->search_left, $this->search_right);
}
// end snip
private function add_bar($type, $left, $right) {
$result = <<< HERE
<div class="$type">
<div class="left">$left</div>
<div class="right">$right</div>
</div>
HERE;
}
并实例化一个Panel:
$p = new Panel("my panel");
$p->info_left = "my left content";
$p->search_right = "my right search content";
echo $p;
到目前为止,我还没有使用模板引擎,因为逻辑看起来很复杂,我几乎可以把它放在课堂上。 (该类具有很少的业务逻辑,但有很多表示逻辑。)也许有更好的方法....?
答案 0 :(得分:0)
听起来你正在重新创建div。我认为如果你定义一个div格式然后创建不同的css样式来为每组div设置不同的样式会更好。
所以它会是这样的:
<div class="title">
<div class="left">my left content</div>
<div class="right search">my right search content</div>
</div>
我会保留css规则的复杂逻辑,然后为你拥有的每种类型制作一个单独的模板。
答案 1 :(得分:0)