• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit geerbten Klassen

Mars@Gera

Mitglied
Hallo,

ich habe ein Problem mit meinen Klassen.
Folgendes Szenario:
PHP:
class a{
   private $blah;
   public function getBlah(){
     return $this->blah;
   }
}

class b extends a{
  private $dir = "dir/";
  public function __construct(){
    parent::construct();
  }

  public function loadblah(){
     include $this->dir . $this->getBlah() . '/modul.php';
     $string = $this->getBlah();
     $modul = new $string();
     $modul->init();
  }
}

in einem anderen Ordner (was in $this->getBlah() steht)
PHP:
class C extends b{
   public function init(){
      echo "1";
   }
}

normalerweise sollte er 1 ausgeben, stattdessen kommt die Meldung Cannot redeclare class impressum in

Weiss jemand einen Rat ... weiss nicht mehr weiter

mfg Marcel
 
Vermutlich inkludierst du die Datei, in der impressum definiert wird, mehr als einmal. Das besagt jedenfalls die Fehlermeldung.

Rufst du loadBlah mehrfach auf?
 
Denke, das Problem ist/war eher, dass include nunmal immer wieder die nachgefragt Datei einbindet. Bei den *_once-Varianten der Befehle (ich zähle mal require dazu), ist das anders.

test.php:

PHP:
<p>test.php eingebunden</p>

Dieser Code durchläuft den Inhalt mehrfach:

PHP:
<?php

include 'test.php';
include 'test.php';
include 'test.php';

Dieser nicht:


PHP:
<?php

include_once 'test.php';
include_once 'test.php';
include_once 'test.php';

Für den hier vorliegenden Zweck ist in der Regel require_once die beste Lösung.
 
Zurück
Oben