Globale / klassenübergreifende Variable

DeluXe

Funkjoker
Tag zusammen,

ich habe gerade ein Problem eine Variable aus einer Klasse "global" zu machen, ich bastel mal eben ein Beispiel zum besseren Verständnis.

PHP:
class site {
// diese function macht nicht anderes, als einfach neue klassen hinzuzufügen
 function class_load( $class ) {
  [...]
  $this->$class = &new $class( $this );
  return $this->$class;
  [...]
 }
}

// der aufruf sieht dann z.b. so aus
$site = new site();
$site->class_load( 'fooclass' );
// und so wird dann darüber zugegriffen
$site->fooclass->bar();
Angenommen, die "fooclass" sieht ungefähr so aus
PHP:
class fooclass {
 var $foo = array();

 function fooclass( &$s ) {
  $this->site = &$s;
 }

 function bar( $var ) {
  $this->foo[] = $var;
 }
}

Soa, jetzt kann man ausserhalb aller Klassen per
PHP:
$site->fooclass->bar( 'argument' );
auf die Variable "$foo" zugreifen, andererseits sollte man aus einer anderen Klasse heraus auch per
PHP:
$this->parent->fooclass->bar( 'another content' );
darauf zugreifen können.

Das Problem ist jetzt, das beide Zugriffsmethoden eine eigene Instanz der Klasse haben, was jedoch nicht gewünscht ist. Sie sollen beide auf die selbe Instanz zugreifen.

Kann mir irgendjemand sagen wo dabei mein Denkfehler liegt? Im Grunde sollte das doch so funktionieren, oder?

Vielen Dank schonmal im Vorraus.

*edit*
Kurz die Fehler dieses Beispiels gefixt. ;)
 
Zuletzt bearbeitet:
Uhm


function foobar($vardingz) {
GLOBAL <globale variable die in der Klasse ist>;
.
.
.
.
.
}

da haste deine Globalen-Klassen-Variablen :P
 
Es wird schon $this übergeben, welches im Prinzip das selbe wie $site ist, somit würde das auf das Selbe hinaus laufen.

Wie dem auch sei, das Problem ist gelöst...ich hab mit einer unglücklichen If-Abfrage die Variable einfach überschrieben, nix mit zwei Instanzen.

Somit ein sinnbefreiter Thread mehr im Forum. :)
 
Zurück