Jump to content

Archived

This topic is now archived and is closed to further replies.

mahdoum2

Extended Classes

Recommended Posts

I have a main class and other sub classes that are extensions of the main class. I want to have a variable in the main class that can be affected by the sub classes... I'll try to explain better.

$main = new MAIN; // main class
$sub = new SUB;// sub class 1 extension of main
$sub2 = new SUB2; //sub class 2 extension of main

$sub->testvar++;
echo $sub->testvar; //test var is located in the main class
// will output 1

$sub2->testvar++;
echo $sub2>testvar;
//wil output 1

What I want the program to do is realise that testvar has been changed by sub and i want sub2 to output 2 and not 1.

I'm not sure how to implement this into classes, I realise that sub and sub2 both have same structure of main but completly different memory addresses.

So how can I fix this?

Share this post


Link to post
Share on other sites
[code]
class my_main {
    static  $testvar;
    
}
class my_sub extends my_main {
    function  test() {
        echo ++my_main::$testvar, '<br>';
    }
}

$a = new my_sub;
$b = new my_sub;

$a->test();
$b->test();[/code]

Share this post


Link to post
Share on other sites
Ok thanksI tried that earlier but it didn't seem to work... does putting protected or private before the static affect it?

whats the difference between using classname::object
and $this-> object? Thats where I went wrong

Share this post


Link to post
Share on other sites
Private will throw an error but protected will work.

In subclass you need to refer to the main class's class variable so refer to it with

mainclassname::$testvar

or

parent::$testvar;

$this->$var refers to the var in the current instance.

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.