Bir nesne örneği soyut bir heirarchy genelinde bir arayüz işlevi çağırmak için çalışıyor

0 Cevap php

Geçenlerde benim evde yetiştirilen web sitesi jeneratör platformu için bir çiftleşmiş sisteminin uygulanması olmuştur. Ne şu anda uygulamaya çalışıyorum bu yüzden (bu sadece bir örnektir) gibi şablon sınıf heirarchy boyunca bir arayüz kullanımı:

interface IStyleSheet
{
    public function StyleSheetFragment();
}

abstract class TemplateBase
{
    public abstract function DoRender();
}

abstract class TemplateRoot extends TemplateBase implements IStyleSheet
{
    public function DoRender()
    {
        ?>
        <div id='content1'>
            <?php 
                $this->Content1();
            ?>
        </div>
        <div id='content2'>
            <?php 
                $this->Content2();
            ?>
        </div>
        <?php 
    }

    public abstract function Content1();
    public abstract function Content2();

    public function StyleSheetFragment()
    {
        ?>
            <style>
                #content1{
                    text-align: center;
                }

                #content2{
                    text-align: right;
                }
            </style>
        <?php 
    }
}

class PageView_Home extends TemplateRoot implements IStyleSheet
{
    public function Content1()
    {
        ?>
            <div id='foo'>
                <?php 
                    // some ui stuff here
                ?>
            </div>
        <?php 
    }

    public function Content2()
    {
        ?>
            <div id='bar'>
                <?php 
                    // some more ui stuff here
                ?>
            </div>
        <?php 
    }

    public function StyleSheetFragment()
    {
        ?>
        <style>
            #foo{
            /*
                styling stuff
            */
            }

            #bar{
            /*
                more styling stuff 
*/
            }
        </style>
        <?php 
    }
}

Şimdi, heirarchy sonundaki görünümü sınıf yansıma kullanarak üzerine denir, ne yapmam mümkün istiyorum döngüsü 1 ile taban sınıfların 1 listesinde geçer ve otomatik olarak o olmadan her birinde arayüz fonksiyonu StyleSheetFragment () çağrı görünümü sınıfta geçersiz kılınmış bir sürümüne çözme.

Ben düşündüğünü Diğer seçenek statik işlevleri kullanmak için ama bu bir arayüz ile yürürlüğe olamaz (ben çok temel sınıfta tanımlamak olabilir ama yine, bu örneği özellikle kendine tarz olarak sınıfını ifade edecek bir şey yok böylece) caizse.

Gerçekten dolayısıyla benim üzerinde arayüz desen kullanmayı seçerek, türüne göre uygulanması gereken.

Herhangi bir yorum veya öneriniz en mutluluk duyacağız.

0 Cevap