seems to me that you're trying to have an object's member behave as if it
had global scope.  you never say "$foo = new bar()".  instead you say
"$this->foo = new foo()" where $this is an instance of Overall.  you can't
instantiate a Foo as a member of an Overall instance, and then expect to
talk to that Foo without going thru the instance itself (which Jonathan
suggested).

so, either use $overall->foo to talk to the Foo instance, or you could do
this in Overall::load():

function load($class)
{
    global $$class;
    $$class = new $class();
    $this->$class =& $$class;
}

which i think will create the Foo instance in global scope, and give the
Overall instance a member that is a reference to that same object.


"Tularis" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> ok, I have gotten great help here  already, but it still doesn't work,
> it returns a object not found error (on the $foo->bar() line). I want to
> change $overall->foo->bar() to $foo->bar... any tips? or help??
>
> thanx!
> - Tularis
>
> <?php
>
> class overall {
> var $loaded;
>
> function load($class){
> eval("global \$$class;"); // This didn't work either
> //$this->loaded[] = $class; // see the comments with the foreach()
> eval("\$this->$class = new $class;");
> return true;
> }
> }
>
> class foo {
> var $bar;
>
> // Constructor
> function bar(){
> if(!isset($this->bar)){
> $this->bar = 1;
> }else{
> $this->bar++;
> }
> echo $this->bar."<br>";
> }
> }
>
> // Start actual loading
> $overall = new overall;
> $overall->load('foo');
>
> /*
> foreach($overall->loaded as $key=>$val){ // didn't work.. I commented
> this out, because I thought it MIGHT interfere with the other way
> $val =& $overall->$val; // both don't work though :(
> }
> */
>
> $overall->foo->bar();
> $overall->foo->bar();
> $overall->foo->bar();
> $overall->foo->bar();
>
> // it doesn't understand this
> $foo->bar();
> ?>
>



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to