(sent this to the wrong list the first time - apologies in advance)

Given an app with the following overall class structure:

Base.class {
        function Base() {
                ##initialize stuff
        }
}

A.class extends Base {
        var $var;
        var $b;
        function A() {
                $var="x";
                $b=new B.class();
        }
}

B.class extends Base {
        var $y;
        function B() {
                $y="something";
                ##How do I refer to $var in A
        }
}

Now, how would/could an instance of B get to a variable in A (i.e. the
calling class).  One (seemingly rather ugly) way is to declare the A
instance global and refer to that from within B.  I.e.

<?
global $x
$x=new A;  ## now we can say something like "$x->var" from within B ?>

Or, another way is to pass a reference to A in with the call to B - so
we'd change the class defs for A and B to look like:

A.class extends Base {
        var $var;
        var $b;
        function A() {
                $var="x";
                $b=new B.class($this);  //pass a ref to myself
        }
}

B.class extends Base {
        var $a;
        var $y;
        function B(&$a) {  //always take this arg as a reference
                $y="something";
                // now $a contains a ref to the calling object
                echo $a->var;
        }
}

Am I thinking about this correctly?  Am I missing some obvious language
contruct which would obviate the need for A to pass itself as an arg to
the instantiation of B?  Is my object structure completely naive?

In the second case, what happens after you serialize and unserialize an
A object as in a session?  Will The instance of B called $b in the A
object still contain a _reference_ to the A object in it's $a var, or
will it now have a _copy_?

I'm trying to get an idea of best practices for these types of issues.
Any comments/discussion is very much appreciated.

Al





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



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

Reply via email to