Moein Hosseini
Moein Hosseini

Reputation: 4383

make object from another in constructor of class

I wanna make object from another class in other one. so I done it:

class National_Number{
    private $num = array();
    public function __construct($first = NULL,$second = NULL,$third = NULL) {
        $this->set($first,0);
        $this->set($second,1);
        $this->set($third,2);
    }
    public function set($num = NULL,$part = 0)
    {
        if ($num != NULL AND $part num[$part] = $num;
            else
                return FALSE;
        }
        else
        {
        return FALSE;
        }
    }
    public function get($part = 0)
    {
        if ($part num[$part];
        else
            return FALSE;
    }
}
class Temp {
    private $ID;
    public function __construct() {
        $ID = new National_Number(127,110,8100);
    }
    public function _get()
    {
        var_dump($ID->get());
    }
}
$temp = new Temp();
$temp->_get();

the national code will work correctly,but the Temp class will not work,where is the problem?

Upvotes: 0

Views: 231

Answers (2)

ka_lin
ka_lin

Reputation: 9432

Don`t forget to use " $this-> " when accessing class members, updated code=>

class National_Number{
            private $num = array();
            public function __construct($first = NULL,$second = NULL,$third = NULL) {
                $this->set($first,0);
                $this->set($second,1);
                $this->set($third,2);
            }
            public function set($nume = NULL,$part = 0)
            {
                if ($nume != NULL AND $part){
                    $this->num[$part] = $nume;
                }
                    else
                        return FALSE;
                }


            public function get($part = 0)
            {
                if (isset($this->num[$part])){
                    return $this->num[$part];
                }
                else
                    return FALSE;
            }
        }
        class Temp {
            private $ID;
            public function __construct() {
                $this->ID = new National_Number(127,110,8100);
            }
            public function _get()
            {
                var_dump($this->ID->get(1));
            }
        }
        $temp = new Temp();
        $temp->_get();
        ?>

Upvotes: 1

KingCrunch
KingCrunch

Reputation: 131871

$ID is a local variable and only valid within __construct(). If you want to refer properties, you must use $this->ID

$this->ID = new National_Number(127,110,8100);

Same for __get()

Upvotes: 1

Related Questions