php karmaşık kap oluşturmak için nasıl

2 Cevap php

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 ....?

2 Cevap

Eğer divs yeniden yaratıyor gibi geliyor. Sana divlere bir biçimi tanımlanmış ve daha sonra farklı divlere her set stil için farklı css stilleri yarattı eğer daha iyi olacağını düşünüyorum.

bu yüzden gibi bir şey olurdu:

<div class="title">
    <div class="left">my left content</div>
    <div class="right search">my right search content</div>
</div>

Ben css kuralları için karmaşık mantığı tutmak, ve sonra var türlerinin her biri için ayrı bir şablon yapmak istiyorum.