If you want access to error functions within the db class it must either
extend the error class or have an error object within it. Either ...

Class DB extends Error
{       ...
}

Class Core extends DB
{       ...
}

or 

Class DB
{       var $error;
...
        function DB() // constructor
        {       ...
                $this->error = new Error();
        }
...
}

Class Core
{       var $db;
        var error;

        function Core() // constructor
        {       ...
                $this->db = new DB();
                $this->error = new Error();
                ...
        }
}
        at the end of the day, both these are ways of getting around the
lack of multiple inheritance

        Tim Ward

        ----------
        From:  [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
        Sent:  24 October 2001 22:45
        To:  [EMAIL PROTECTED]
        Subject:  PHP object communication

        Not coming from a programming background, I'm going to have
difficulty
        explaining this one... :)

        I would like to handle an entire application through one object,
which in
        turn contains objects. I only recently "got" classes though, and I
don't
        fully understand if what I want to do is possible, or if I'm going
about it
        the wrong way. Consider:

        <?php

        // All of these will be in separate files.
        // The first two are separated simply because
        // I want to keep my include files small.

        class Config {
                // Base config class.
                // Just contains data.
        }

        class Core extends Config {
                // Base application class.
                // Just contains methods.
        }

        class Error {
                // Error handler.
        }

        class DB {
                // Database handler.
        }

        ?>

        Tying the first two together is no problem, I can just extend the
Config
        class. However I would like to incorporate the third and fourth as
objects
        inside the main object:

        <?

        // In fact these would be instantiated (is that the
        // right word?) inside the Core class.

        $Core        = new Core;
        $Core->Error = new Error;
        $Core->DB    = new DB

        ?>

        This is fine when working in the main application, or in the $Core
object,
        but where I get stuck is with communication between the $Core->Error
and
        $Core->DB objects. Say for example that within the DB class I
encountered an
        error, and wanted to talk to the Error object - I /could/ do this:

        <?

        class DB {

                var $Error;

                function DB() {
                        global $Core;
                        $this->Error = $Core->Error;
                }

        }

        ?>

        But if I extend the application later and add a bunch of new
classes, it
        means I have to do the same for each object I add. I get the
impression that
        I might be able to do this with references, but I can't get a handle
on them
        for the life of me. Can someone explain?

        Sorry for the lengthy post.

        Thanks,
        adam
        

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to