Re: extended class question
| From: | Rick Fletcher | Date: | Mon, 13 Sep 2004 23:09:06 +0000 |
| Subject: | Re: extended class question | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-196580@lists.php.net to get a copy of this message | ||
Ed Lazor wrote:
How come the output to this script is "World Trade Center" instead of "Pizza Delivery"? Thanks, Ed ---------------------------------------------------------------- <?php class test { private $var1; function __construct() { $this->var1 = "World Trade Center"; } function get_var1() { return $this->var1; } function set_var1($data) { $this->var1 = $data; } } class testing extends test { function __construct() { parent::__construct(); $this->var1 = "Pizza Delivery"; } } $test2 = new testing(); print "var1 = " . $test2->get_var1() . "<br>"; ?>Because test's var1 is private. test->var1 isn't accessible by class testing, so the assignment you're doing in testing's constructor is assigning "Pizza Delivery" to testing->var1 instead. When you call $test2->get_var1() you're calling the parent's get_var1() method, which prints out the parent's var1 property. (which hasn't been touched.) Change test's var1 to protected and it'll work. --rick