PHP Çoklu Kalıtım taklit

1 Cevap php

I am working on my own MVC framework and found myself stuck. I need the following construction:

 Controller  
      --> Backend_Controller
           --> Backend_Crud_Controller
       --> Frontend_Controller
           --> Frontend_Crud_Controller

Her ikisi de 'Backend_Crud_Controller' ve 'Frontend_Crud_Controller' aynı özelliğe sahip ve bu nedenle 'Base_Crud_Controller' adlı başka bir sınıfını genişletmek gerektiğini, tek fark farklı mekanizmaları uygulamak 'Backend / FRONTEND' Kontrolörleri geliyor.

Temelde her ikisi de sınıfları miras olmalı ama benim sorunum 'Arka Uç / FRONTEND kontrolör zorunlu' Base_Crud_Controller 'genişletmek olmamasıdır.

Ben çoklu kalıtım PHP yok biliyorum ama ben bir çözüm arıyorum, ben zarif bir çözüm olduğunu düşünmüyoruz olarak (Symfony gibi) Katmalar kaçınmaya seçin.

Tüm bu yöntemleri uygulamak gerekir beton sınıfları olarak sonuna kadar gibi arayüzler bana uymaz.

1 Cevap

Decorators veya tasarımınızı yeniden düşünülmesini düşünün.

class FrontEnd
{
    protected $baseController;
    public function __construct(BaseController $controller) { /* ... */}
    // ... 
    // methods specific to Frontend
    // ...
    public function __call($method, args) {
        // implement __call to delegate other methods to BaseController
    }
}

Ayrıca arkaplana oluşturmak ve Crud Dekoratör ve örneğin, birlikte bu yığabilirsiniz

$crudBackEndController = new Crud(new BackEnd(new BaseController));