Mehrmaliges aufrufen einer Function

Blobb

Mitglied
Hallo,

Ich habe mal wieder ein kleines Problem und würde gerne wissen wie man das am besten umgehen bzw. lösen kann ;)

Folgendes:

Ich rufe eine function über require(...) auf.
Die function gibt mir ein Array zurück welches Daten von einer mySQL holt.

$xy = namefunction();

Nun folgen einige If Anweisungen.
In diesen IF Anweisungen werden auch wieder Daten über mySQl upgedatet.
Am Ende der IF Anweisungen will ich nun die $xy = namefunction(); neu laden.
Da sie inzwischen veraltete Inhalte besitzt.

Erst danach folgt der HTML Output...

Nun aber das Problem.
Da ich die function bereits zuvor ausgeführt habe kann ich sie nicht mehr neu laden.
(..wenn ich das richtig verstanden habe.. // Fatal Error: Cannot redeclare ..... )

Gibt es eine Möglichkeit eine function zu resetten wie unset() um darauf wieder zuzugreifen?
Oder wie sollte ich das am besten angehen? :confused:
 
Also: mit require bindest du eine Datei ein. Die enthaltenen Klassen und Funktionen werden dann in PHP registriert.

Die Funktionen kannst du dann BELIEBIG oft aufrufen. Nur was du nicht machen darfst ist die Datei noch mal einzubinden, indem die Funktion oder Klasse definiert ist. Man darf in PHP eine Klasse oder Funktion nur 1x deklarieren.

Damit eine Datei auch nur einmal geladen wird, nutzt man require_once.

Das löst aber dein Problem nicht. Du musst einen anderen Weg finden, die Funktion noch mal aufzurufen. Den bisherigen Aufruf machst du wahrscheinlich in der Datei, in der du die Funktion deklariert hast. Pack die Funktion in eine neue Datei (funktionen.lib.php beispielsweise). In der Datei die du bisher per require einfügst, setzt du am Anfang ein require_once("funktionen.lib.php"); Das müsste dein Problem lösen.

Setz dich aber bitte mal mit Software Design auseinander. Zum Beispiel sollten Funktionen in Bibliotheken und getrennt gesammelt werden und nicht im Programmablaufcode enthalten sein.

Ciao, Jörg
 
Habe ich bereits getestet. (sorry, hätte ich gleich dazuschreibe sollen)
Sowohl include() als auch require() macht kein unterschied in diesem Fall.

Die Function ist bissl zu lang um sie zu posten, von daher schreib ich dir nur mal den Aufbau. ;)

include Datei:
PHP:
function xy()
{
  function xy_a()
  {
   ....
  return $a;
  }
  $a = xy_a();
  
  function xy_b($a)
  {
  ...
  return $b;
  }
  $b = xy_b($a);
  // usw..
}

Aufrufseite:
PHP:
include('function.php5');

$abc = xy();

if ( $xy[..] == TRUE ) { $sql = "UPDATE ... "; }
// usw..

// Bei der letzten IF will ich nun $abc neu laden
if ( $xy[...] == true ) { 

  $sql = "UPDATE ... ";

  if($sql == TRUE) { unset($abc); $abc = $xy(); }
}

// Ab hier wird Template geladen und die neuen Daten von $abc verarbeitet...

Hoffe der Aufbau ist verständlich.. :)
 
Zuletzt bearbeitet:
also so etwas habe ich noch nie gesehen ... Verschachtelte Deklarierungen von Funktionen. Das was du machen willst kannst du auch ohne eine Verschachtelung realisieren. Ich sehe absolut keinen Grund, warum du das so kompliziert machen willst.

Update: ahh ... zu spät
 
Naja, die function an sich ist schon etwas lang geraten.
Um auch noch in 4 Wochen nen Überblick zu haben..
Dachte ich mir, ich pack alles in seperate Functionen.

Aber nen dickes auskommentieren
// ############# Info Kommentar blabla... ##########
tut´s ja auch :-)
 
Zurück