Problem mit require() in Objekten...

lambda

Erfahrenes Mitglied
Hi,

ich habe ein Objekt in dessen Konstruktor per require ein Php-File einbezogen wird, dass einige Parameter bereitstellt.
Jetzt habe ich folgenden Ablauf:

PHP:
$objekt = new objekt();
if($objekt->function())
   $objekt = new objekt();
else 
   ...

Wenn ich jetzt das 2. mal eine Instanz erstellen will, schmeißt er diesen Fehler:
Fatal error: Cannot redeclare get_mode() (previously declared in parameter1.inc.php:5) in parameter2.inc.php on line 4

Was passiert ist mir klar, er deklariert die Funktionen 2 mal.
Aber warum interessiert ihn das? Das passiert doch in den Objekten, die sollten doch untereinander keine Gültigkeit haben!

Danke vorab!
 
Ein Aufruf von require innerhalb eines Konstruktors? Das ist erstens schlechter Programmierstil und lässt sich zweitens sicher umgehen...

Außerdem sollte dies kein Problem darstellen, da die im Konstruktor deklarierten Funktionen nach verlassen des Konstruktor-Scopes wieder als nicht deklariert gekennzeichnet werden.

Der entsprechende Code-Ausschnitt der Klassendeklaration wäre da jetzt hilfreich...
 
Warum schlechter Stil?


Hier der Code-Schnipsel:
PHP:
class form_handler {

  var $path="";
  var $next_page=""; //Post-Action
  var $missing = "";
  var $_POST = "";
  var $var_names;
  var $combo_group_count = -1;
  var $dropdown_count = -1;
  var $value_array = array();		


function form_handler($p_path, $p_next_page, $p_post, $p_value_array) {			
  $this->path = $p_path;
  $this->next_page = $p_next_page;
  $this->_POST = $p_post;			
  $this->value_array = $p_value_array;
			
  $decoder_path = substr($this->path, 0, (lastIndexOf($this->path, "form.php")-8)).".decoder.php"; 
if(file_exists($decoder_path)) {
	require ($decoder_path);		
	$this->var_names = createVarNames(getGroups(), "g");
}
}

Kurze Erklärung:
Die XXX.decoder.php Dateien enthalten Funktionen und Parameter zum dyn. Auswerten von Formularen. (createVarNames(), getGroups(), ...).

Was mich nun wundert ist folgendes:

Außerdem sollte dies kein Problem darstellen, da die im Konstruktor deklarierten Funktionen nach verlassen des Konstruktor-Scopes wieder als nicht deklariert gekennzeichnet werden.

Wenn ich im Haupteil Methoden der Objekt-Instanz aufrufe, kann ich in ihnen auf Funktionen aus o.g. XXX.decoder.php Datei zugreifen. Strange... :eek:
 
Zuletzt bearbeitet:
Zurück