"ContentView" Überladungsproblem

Thema wurde von Avenger, 27. Dezember 2012 erstellt.

  1. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ich bin gerade auf ein ziemliches Problem gestoßen:

    Die diversen "xxxxxxxContentViews" überladen die Basis-"ContentView"-Klasse, z.B.

    PHP:
    class AdminInfoboxContentView extends ContentView
    Das Problem ist, dass diese abgeleiteten "xxxxxxxContentViews" aber nicht die Überladungen der Basis-"ContentView"-Klasse mit erben, sondern nur die Basis-"ContentView"-Klasse....

    Wie kann man das denn lösen???
     
  2. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ich denke so:

    In "system\gngp_layer_init.inc.php" wird

    PHP:
    require_once(DIR_FS_CATALOG.'system/views/ContentView.inc.php');
    ersetzt durch

    PHP:
    MainFactory::create_object('ContentView');
    (Damit wird die "ContentView"-Klasse inkl. aller Overloads instantiiert.)

    In "system\core\MainFactory.inc.php => public static function create_object" wird vor

    PHP:
    return $coo_output_object;
    eingefügt

    PHP:
        if ($p_class_name=='ContentView')
        {
          
    //class_alias($t_operation_class_name,'ContentViewFull',false);
          
    $t_eval_code="class ContentViewFull extends ".$t_operation_class_name.' {}';
          
    $result=eval($t_eval_code);
        }
    (Damit wird die neue Klasse "ContentViewFull" erzeugt, die die "ContentView"-Klasse inkl. aller Overloads ist.

    Die diversen "xxxxxxxContentViews" müssten dann "ContentViewFull" beerben statt "ContentView";

    Für die Beispiel-Klasse "AdminInfoboxContentView" wäre das dann

    PHP:
    class AdminInfoboxContentView extends ContentViewFull