Декоратор с видом - PullRequest
       15

Декоратор с видом

0 голосов
/ 06 декабря 2011

Как применить декоратор в представлениях структуры, зная, что только один вид отвечает за выполнение блока кода для визуализации шаблона?как:

<?php
          class View {

                 public function render ( $template ) {
                        printf ( 'Rendering template %s' , $template ) ;
                 }

          }

          class MemberView { }

          class AdministratorView { }


          $Admin = new MemberView ( new AdministratorView ( ) ) ;
          $Admin->render ( ) ;

В этом случае я выполняю рендеринг администратора, но, пройдя через драйверы, получу и основные функции, которые каждый участник достиг представления и выполняет для показа панелей или вещей, которыетолько администраторы могут видеть, но по логике, администратор также является членом .. так что структура должна быть создана, относится к модераторам, глобальным модераторам ..

Мой вопрос заключается в том, как применитьдекоратор в этом случае ..

1 Ответ

0 голосов
/ 06 декабря 2011

Ну, нам удалось решить проблему .. Решение:

<?php

          class View {

                 public function render ( $template ) {
                        printf ( 'Rendering template %s' , $template ) ;
                 }

          }

          abstract class ViewDecorator extends View {

                 protected $view ;

                 public function __construct ( View $view ) {
                        $this->view = $view ;
                 }

          }

          class MemberView extends ViewDecorator {

                 public function render ( ) {
                        $this->view->render ( 'Member' ) ;
                 }

          }

          class AdministratorView extends ViewDecorator {

                 public function render ( ) {
                        $this->view->render ( 'Administrator' ) ;
                 }

          }

          $ADM = new MemberView ( new AdministratorView ( new View ( ) ) ) ;
          $ADM->render ( ) ;

Вывод: шаблон рендеринга Администратор

Если я удалю рендеринг администратора.

<?php
          $Member = new MemberView ( new View ( ) ) ;
          $Member->render ( ) ;

Вывод: Шаблон рендеринга Элемент

...