Ben dahil edilebilir ne mümkün varyasyonları bir yeri vardır bir kap türü oluşturma:
- başlık çubuğu
- arama çubuğu
- Form bar
- sekme çubuğu
- özel bar
- bilgi çubuğu
- eylem / durum çubuğu
- içerik alanı
Bunlardan sadece içerik alanı gereklidir. Orada barlar ortak setleri paylaşmak istiyorsunuz alt türleri vardır, ama onlar da karışık ve keyfi kombinasyonlarda eşleştirilmiş olabilir. Ayrıca, her bir çubuk tipi sol veya sağ tarafında ya da üzerinde içeriğe sahip olabilir.
Ben gibi özellikleri ile bir Panel sınıf oluşturma yolda devam ettik:
- info_left
- info_right
- search_left
- search_right
- vb
o mantık bu tür yapıyor:
// 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;
}
ve bir Panel örneğini:
$p = new Panel("my panel");
$p->info_left = "my left content";
$p->search_right = "my right search content";
echo $p;
Mantık neredeyse doğrusu sınıfta saklardım o kadar karmaşık görünüyor, çünkü şimdiye kadar, ben uzakta bir şablon motoru kullanarak kaldı ettik. (Sınıf çok az iş mantığı vardır, ama sunum mantığı çok.) Belki iyi bir yaklaşım var ....?