Mam następujący kod:
<?php interface ContentInterface { public function get_content_list($start, $offset); } abstract class Content { protected $_classname; protected $_foto; protected $_file; protected $_movie; protected function __construct() { $this->_foto = Fotosingleton(); $this->_file = Filesingleton(); $this->_movie = Moviesingleton(); } public function get_foto() {} } class Page extends Content implements ContentInterface { protected function __construct() { $this->_classname = 'page'; parent__construct(); } $c = __CLASS__; self$instance = new $c; } return self$instance; } public function __clone() { } public function get_content_list($start, $offset) {} public function add($start, $offset) {} public function edit($start, $offset) {} public function view($start, $offset) {} public function form($start, $offset) {} } ?>
Klasa Page(jak i inne klasy np. News, Faq) dziedziczy po Content obsługę pobierania z bazy, uploadu nowych zdjęć, plików i załączników. W każdym module strona|aktualności|faq będzie można do treści strony dodać zdjęcia w galerii, załączniki i filmy, więc chce ograniczyc ilość kodu odpowiadającego za te czynności. Dodatkowo poprzez interfejs chce wskazać jakie wymagane przez moduł metody muszą znajdować się w klasie - tworzenie nowego modułu przez drugiego programistę.
Nie jestem pewien czy ta konstrukcja jest poprawna. Mógłby ktoś zerknąć.