Hello, I'm trying to get the hang of OOP here but can't quite figure
out how to relate these classes.  I've got one for the main project,
one for the database, and one for a user.  Somehow I need to get the
user access to the database, without cumbersome constructor calls
involving a copy of the instance of the class itself.

// main project class
class gfusion {
    protected static $db;
    function __construct() {
        $this->db = new db;
    }
}


// database class
class db {
    private $link;
    private $query;
    private $result;
    ...
    function query($query);
    function fetch_row();
    function fetch_rows();
    ...
}


// user class
class user {
    private $id;
    private $group_id;
    private $login;
    private $password;
    /* Somehow I need to get the db class instance here. */

    function __construct($id = false) {
        if (is_numeric($id)) {
            print_r($this);
            $this->db->query('SELECT * FROM user WHERE id = ' . $id);
            $user_info = $this->db->get_row();

            $this->id             = $user_info['id'];
            $this->group_id       = $user_info['group_id'];
            $this->login          = $user_info['login'];
            $this->password       = $user_info['password'];
        }
    }
    ...
}

 
I tried extending the user class from the project class, but that
didn't work, because the $db var was empty.  I tried changing it to
static, but it didn't inherit the $db variable for some reason.  So,
how can I make this work, so I can write a bunch of classes that can
blindly use $this->db or something similar without having to worry
about setting it in the constructor?  I thought about setting it as a
global, but that didn't seem very... OOP.

-- 
Joel Kitching
http://midgardmanga.keenspace.com/

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

Reply via email to