Jump to content


Photo

Extended Classes


  • Please log in to reply
3 replies to this topic

#1 mahdoum2

mahdoum2
  • New Members
  • Pip
  • Newbie
  • 2 posts

Posted 12 June 2006 - 11:45 AM

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?

#2 Barand

Barand
  • Moderators
  • Sen . ( ile || sei )
  • 18,021 posts

Posted 12 June 2006 - 12:49 PM

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();

If you are still using mysql_ functions, STOP! Use mysqli_ or PDO. The longer you leave it the more you will have to rewrite.

Donations gratefully received






moon.png

|baaGrid| easy data tables - and more
|baaChart| easy line, column and pie charts

#3 mahdoum2

mahdoum2
  • New Members
  • Pip
  • Newbie
  • 2 posts

Posted 12 June 2006 - 01:03 PM

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

#4 Barand

Barand
  • Moderators
  • Sen . ( ile || sei )
  • 18,021 posts

Posted 12 June 2006 - 02:40 PM

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.
If you are still using mysql_ functions, STOP! Use mysqli_ or PDO. The longer you leave it the more you will have to rewrite.

Donations gratefully received






moon.png

|baaGrid| easy data tables - and more
|baaChart| easy line, column and pie charts




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users