Bernhard Peissl: Variablen inerhalb und außerhalb von Funktionen

Beitrag lesen

Grüssi

Ich hätte da auch ne Frage zu Scoping:

$test = "Hallo";
funktion gib_was_aus()
  {
  echo $test." ;o)";     // Gibt ';o)' aus ;o(
  }
So geht das nicht....

So mußt Du test innerhalb der Funktion bekannt machen.
http://www.php.net/manual/de/language.variables.scope.php

Ich hab da ein ähnliches Problem, wollte zwar keinen eigenen Thread aufmachen, nun ist die Verlockung aber gross, mich hier thematisch einfach anzuhängen:

class Menu {

var $MenuID;
   var $expand_all;
   var $file;

function Menu() { [...] }

function ParseMenu () {

// trifft expat auf ein sich öffnendes Tag wird diese Fkt. aufgerufen
      function startTag($parser, $name, $attrs) {
         echo $this->MenuID;
      }

// trifft er auf ein schliessendes Tag, dann diese Fkt.
      function endTag($parser, $name) { [...] }

$xp   = xml_parser_create();

// Hier werden die beiden Funktionen mit Expat verknüpft
      xml_set_element_handler($xp, "startTag", "endTag");

[...]

}
}

$m = new Menu;
$m->ParseMenu();

Ich kann in der inneren Funktion (startTag) nicht auf die Instanzvariable $MenuID zugreifen! In der äusseren (ParseMenu) allerdings schon! Die Verschachtelung muss aus unerfindlichen Gründen sein, da expat sonst die Handlerfunktionen ("startTag" und "endTag") nicht als solche erkennt, wenn ich sie als normale Methoden definiere. auch kann ich an die inneren (Handler-)Funktionen keine zusaätzlichen Parameter übergeben, es handelt sich um von PHP zur Verfügung gestellte Interfaces.

Bin schon kurz vorm aufgeben, ergo umschreiben des gesamten Konzepts. Wäre also echt dankbar für Anregungen!

lg bernhard